{"version":3,"sources":["../node_modules/react/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../../src/constants.js","../../src/sheet/Tag.js","../../src/sheet/GroupedTag.js","../../src/sheet/GroupIDAllocator.js","../../src/sheet/Sheet.js","../../src/utils/isStaticRules.js","../../src/models/ComponentStyle.js","../../src/models/StyledComponent.js","../../src/models/GlobalStyle.js","../../src/constructors/createGlobalStyle.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/prop-types/index.js","../node_modules/@material-ui/styles/esm/withStyles/withStyles.js","../node_modules/@material-ui/core/esm/styles/withStyles.js","../node_modules/immutable/dist/immutable.js","../node_modules/@material-ui/core/esm/utils/useForkRef.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/fbjs/lib/invariant.js","../node_modules/@material-ui/core/esm/utils/capitalize.js","../node_modules/draft-js/lib/EditorState.js","../node_modules/react-dom/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@material-ui/icons/esm/utils/createSvgIcon.js","../node_modules/moment-with-locales-es6/index.js","../node_modules/draft-js/lib/Draft.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/draft-js/lib/DraftModifier.js","../node_modules/fbjs/lib/nullthrows.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/axios/lib/utils.js","../node_modules/fbjs/lib/UserAgent.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/draft-js/lib/CharacterMetadata.js","../node_modules/draft-js/lib/ContentBlockNode.js","../node_modules/@material-ui/core/esm/utils/setRef.js","../node_modules/@material-ui/core/esm/styles/colorManipulator.js","../node_modules/axios/index.js","../node_modules/draft-js/lib/generateRandomKey.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@material-ui/core/esm/styles/useTheme.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@material-ui/core/esm/FormControl/FormControlContext.js","../node_modules/@material-ui/core/esm/utils/useEventCallback.js","../node_modules/object-assign/index.js","../node_modules/draft-js/lib/DraftOffsetKey.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@material-ui/icons/utils/createSvgIcon.js","../node_modules/draft-js/lib/gkx.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@material-ui/system/esm/merge.js","../node_modules/@material-ui/core/esm/styles/createBreakpoints.js","../node_modules/@material-ui/core/esm/styles/createMixins.js","../node_modules/@material-ui/core/esm/colors/common.js","../node_modules/@material-ui/core/esm/colors/grey.js","../node_modules/@material-ui/core/esm/colors/indigo.js","../node_modules/@material-ui/core/esm/colors/pink.js","../node_modules/@material-ui/core/esm/colors/red.js","../node_modules/@material-ui/core/esm/colors/orange.js","../node_modules/@material-ui/core/esm/colors/blue.js","../node_modules/@material-ui/core/esm/colors/green.js","../node_modules/@material-ui/core/esm/styles/createPalette.js","../node_modules/@material-ui/core/esm/styles/createTypography.js","../node_modules/@material-ui/core/esm/styles/shadows.js","../node_modules/@material-ui/core/esm/styles/shape.js","../node_modules/@material-ui/core/esm/styles/createSpacing.js","../node_modules/@material-ui/core/esm/styles/createMuiTheme.js","../node_modules/@material-ui/core/esm/styles/defaultTheme.js","../node_modules/@material-ui/core/esm/utils/createChainedFunction.js","../node_modules/draft-js/lib/ContentBlock.js","../node_modules/fbjs/lib/cx.js","../node_modules/draft-js/lib/isElement.js","../node_modules/fbjs/lib/UnicodeUtils.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/emoji-mart/dist/utils/index.js","../node_modules/react-is/index.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@material-ui/core/esm/transitions/utils.js","../node_modules/webpack/buildin/global.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@material-ui/core/esm/utils/useIsFocusVisible.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/@material-ui/core/esm/SvgIcon/SvgIcon.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/draft-js/lib/BlockMapBuilder.js","../node_modules/draft-js/lib/findRangesImmutable.js","../node_modules/draft-js/lib/isHTMLElement.js","../node_modules/draft-js/lib/removeTextWithStrategy.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/emoji-mart/dist/utils/data.js","../node_modules/emoji-mart/dist/components/emoji/nimble-emoji.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/process/browser.js","../node_modules/draft-js/lib/getContentStateFragment.js","../node_modules/draft-js/lib/DraftEntity.js","../node_modules/draft-js/lib/SelectionState.js","../node_modules/fbjs/lib/UnicodeBidiDirection.js","../node_modules/draft-js/lib/findAncestorOffsetKey.js","../node_modules/draft-js/lib/getCorrectDocumentFromNode.js","../node_modules/fbjs/lib/Keys.js","../node_modules/fbjs/lib/Style.js","../node_modules/fbjs/lib/getScrollPosition.js","../node_modules/draft-js/lib/isEventHandled.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@material-ui/core/esm/utils/createSvgIcon.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@material-ui/system/esm/breakpoints.js","../node_modules/@material-ui/core/esm/styles/transitions.js","../node_modules/@material-ui/core/esm/styles/zIndex.js","../node_modules/@material-ui/core/esm/utils/useControlled.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@material-ui/core/esm/SvgIcon/index.js","../node_modules/draft-js/lib/ContentState.js","../node_modules/fbjs/lib/UnicodeBidi.js","../node_modules/draft-js/lib/DefaultDraftBlockRenderMap.js","../node_modules/draft-js/lib/getEntityKeyForSelection.js","../node_modules/fbjs/lib/containsNode.js","../node_modules/fbjs/lib/Scroll.js","../node_modules/draft-js/lib/moveSelectionBackward.js","../node_modules/fbjs/lib/warning.js","../node_modules/draft-js/lib/KeyBindingUtil.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/emoji-mart/dist/utils/store.js","../node_modules/webpack/buildin/module.js","../node_modules/moment/moment.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/draft-js/lib/randomizeBlockMapKeys.js","../node_modules/draft-js/lib/removeEntitiesAtEdges.js","../node_modules/draft-js/lib/insertIntoList.js","../node_modules/draft-js/lib/modifyBlockForContentState.js","../node_modules/draft-js/lib/getNextDelimiterBlockKey.js","../node_modules/draft-js/lib/getOwnObjectValues.js","../node_modules/draft-js/lib/DraftEntityInstance.js","../node_modules/draft-js/lib/sanitizeDraftText.js","../node_modules/draft-js/lib/DefaultDraftInlineStyle.js","../node_modules/draft-js/lib/getSelectionOffsetKeyForNode.js","../node_modules/draft-js/lib/getWindowForNode.js","../node_modules/draft-js/lib/editOnSelect.js","../node_modules/draft-js/lib/DraftJsDebugLogging.js","../node_modules/draft-js/lib/getContentEditableContainer.js","../node_modules/draft-js/lib/getDraftEditorSelection.js","../node_modules/draft-js/lib/getDraftEditorSelectionWithNodes.js","../node_modules/draft-js/lib/getUpdatedSelectionState.js","../node_modules/draft-js/lib/draftKeyUtils.js","../node_modules/draft-js/lib/DraftEditorLeaf.react.js","../node_modules/draft-js/lib/isHTMLBRElement.js","../node_modules/draft-js/lib/DraftEffects.js","../node_modules/fbjs/lib/getActiveElement.js","../node_modules/fbjs/lib/getElementPosition.js","../node_modules/fbjs/lib/getViewportDimensions.js","../node_modules/draft-js/lib/DraftEditorBlock.react.js","../node_modules/fbjs/lib/DataTransfer.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/draft-js/lib/getTextContentFromFiles.js","../node_modules/draft-js/lib/getFragmentFromSelection.js","../node_modules/draft-js/lib/keyCommandPlainBackspace.js","../node_modules/draft-js/lib/getRangeClientRects.js","../node_modules/draft-js/lib/DraftRemovableWord.js","../node_modules/draft-js/lib/moveSelectionForward.js","../node_modules/draft-js/lib/convertFromHTMLToContentBlocks.js","../node_modules/draft-js/lib/getSafeBodyFromHTML.js","../node_modules/draft-js/lib/RichTextEditorUtil.js","../node_modules/draft-js/lib/getDefaultKeyBinding.js","../node_modules/draft-js/lib/DraftStringKey.js","../node_modules/emoji-mart/dist/svgs/index.js","../node_modules/emoji-mart/dist/utils/frequently.js","../node_modules/emoji-mart/dist/utils/shared-props.js","../node_modules/emoji-mart/dist/utils/shared-default-props.js","../node_modules/emoji-mart/dist/components/skins.js","../node_modules/find-with-regex/build/index.js","../node_modules/draft-js-emoji-mart-plugin/lib/constants.js","../node_modules/events/events.js","../node_modules/shallowequal/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@material-ui/icons/Close.js","../node_modules/@material-ui/icons/Minimize.js","../node_modules/@material-ui/icons/ZoomOutMap.js","../node_modules/draft-js-emoji-mart-plugin/lib/index.js","../node_modules/draft-js-plugins-editor/lib/index.js","../node_modules/mic-recorder-to-mp3/dist/index.js","../../../src/utils/isBrowser.js","../../../src/utils/debounce.js","../../../src/utils/isFunction.js","../../../src/utils/getStyleComputedProperty.js","../../../src/utils/getParentNode.js","../../../src/utils/getScrollParent.js","../../../src/utils/getReferenceNode.js","../../../src/utils/isIE.js","../../../src/utils/getOffsetParent.js","../../../src/utils/getRoot.js","../../../src/utils/findCommonOffsetParent.js","../../../src/utils/isOffsetContainer.js","../../../src/utils/getScroll.js","../../../src/utils/includeScroll.js","../../../src/utils/getBordersSize.js","../../../src/utils/getWindowSizes.js","../../../src/utils/getClientRect.js","../../../src/utils/getBoundingClientRect.js","../../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../../src/utils/isFixed.js","../../../src/utils/getFixedPositionOffsetParent.js","../../../src/utils/getBoundaries.js","../../../src/utils/computeAutoPlacement.js","../../../src/utils/getReferenceOffsets.js","../../../src/utils/getOuterSizes.js","../../../src/utils/getOppositePlacement.js","../../../src/utils/getPopperOffsets.js","../../../src/utils/find.js","../../../src/utils/runModifiers.js","../../../src/utils/findIndex.js","../../../src/methods/update.js","../../../src/utils/isModifierEnabled.js","../../../src/utils/getSupportedPropertyName.js","../../../src/methods/destroy.js","../../../src/utils/getWindow.js","../../../src/utils/setupEventListeners.js","../../../src/methods/enableEventListeners.js","../../../src/methods/disableEventListeners.js","../../../src/utils/removeEventListeners.js","../../../src/utils/isNumeric.js","../../../src/utils/setStyles.js","../../../src/modifiers/computeStyle.js","../../../src/utils/isModifierRequired.js","../../../src/methods/placements.js","../../../src/utils/clockwise.js","../../../src/modifiers/flip.js","../../../src/modifiers/offset.js","../../../src/modifiers/index.js","../../../src/methods/defaults.js","../../../src/modifiers/shift.js","../../../src/modifiers/preventOverflow.js","../../../src/modifiers/keepTogether.js","../../../src/modifiers/arrow.js","../../../src/utils/getOppositeVariation.js","../../../src/modifiers/inner.js","../../../src/modifiers/hide.js","../../../src/utils/getRoundedOffsets.js","../../../src/modifiers/applyStyle.js","../../../src/utils/setAttributes.js","../../../src/index.js","../node_modules/lodash/lodash.js","../node_modules/@material-ui/icons/MissedVideoCall.js","../node_modules/@material-ui/icons/Movie.js","../node_modules/@material-ui/icons/VideoCall.js","../node_modules/@material-ui/icons/Videocam.js","../node_modules/@material-ui/icons/OpenInNew.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js","../node_modules/@material-ui/core/esm/Typography/Typography.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/draft-js/lib/AtomicBlockUtils.js","../node_modules/draft-js/lib/ContentStateInlineStyle.js","../node_modules/draft-js/lib/applyEntityToContentState.js","../node_modules/draft-js/lib/applyEntityToContentBlock.js","../node_modules/draft-js/lib/getCharacterRemovalRange.js","../node_modules/draft-js/lib/DraftEntitySegments.js","../node_modules/draft-js/lib/getRangesForDraftEntity.js","../node_modules/draft-js/lib/insertFragmentIntoContentState.js","../node_modules/draft-js/lib/insertTextIntoContentState.js","../node_modules/draft-js/lib/removeRangeFromContentState.js","../node_modules/draft-js/lib/splitBlockInContentState.js","../node_modules/draft-js/lib/BlockTree.js","../node_modules/draft-js/lib/uuid.js","../node_modules/draft-js/lib/EditorBidiService.js","../node_modules/fbjs/lib/UnicodeBidiService.js","../node_modules/draft-js/lib/moveBlockInContentState.js","../node_modules/draft-js/lib/CompositeDraftDecorator.js","../node_modules/draft-js/lib/DraftEditor.react.js","../node_modules/draft-js/lib/DraftEditorCompositionHandler.js","../node_modules/draft-js/lib/DOMObserver.js","../node_modules/fbjs/lib/UserAgentData.js","../node_modules/ua-parser-js/src/ua-parser.js","../node_modules/fbjs/lib/VersionRange.js","../node_modules/fbjs/lib/mapObject.js","../node_modules/fbjs/lib/memoizeStringOnly.js","../node_modules/draft-js/lib/DraftEditorContents.react.js","../node_modules/draft-js/lib/DraftEditorContentsExperimental.react.js","../node_modules/draft-js/lib/DraftEditorBlockNode.react.js","../node_modules/draft-js/lib/DraftEditorNode.react.js","../node_modules/draft-js/lib/DraftEditorDecoratedLeaves.react.js","../node_modules/draft-js/lib/DraftEditorTextNode.react.js","../node_modules/draft-js/lib/setDraftEditorSelection.js","../node_modules/fbjs/lib/isTextNode.js","../node_modules/fbjs/lib/isNode.js","../node_modules/fbjs/lib/getStyleProperty.js","../node_modules/fbjs/lib/camelize.js","../node_modules/fbjs/lib/hyphenate.js","../node_modules/fbjs/lib/getElementRect.js","../node_modules/fbjs/lib/getDocumentScrollElement.js","../node_modules/fbjs/lib/getUnboundedScrollPosition.js","../node_modules/draft-js/lib/DraftEditorContents-core.react.js","../node_modules/fbjs/lib/joinClasses.js","../node_modules/draft-js/lib/DraftEditorDragHandler.js","../node_modules/fbjs/lib/PhotosMimeType.js","../node_modules/fbjs/lib/createArrayFromMixed.js","../node_modules/draft-js/lib/DraftEditorEditHandler.js","../node_modules/draft-js/lib/editOnBeforeInput.js","../node_modules/draft-js/lib/isSelectionAtLeafStart.js","../node_modules/fbjs/lib/setImmediate.js","../node_modules/setimmediate/setImmediate.js","../node_modules/draft-js/lib/editOnBlur.js","../node_modules/draft-js/lib/editOnCompositionStart.js","../node_modules/draft-js/lib/editOnCopy.js","../node_modules/draft-js/lib/editOnCut.js","../node_modules/draft-js/lib/isInstanceOfNode.js","../node_modules/draft-js/lib/editOnDragOver.js","../node_modules/draft-js/lib/editOnDragStart.js","../node_modules/draft-js/lib/editOnFocus.js","../node_modules/draft-js/lib/editOnInput.js","../node_modules/draft-js/lib/editOnKeyDown.js","../node_modules/draft-js/lib/isSoftNewlineEvent.js","../node_modules/draft-js/lib/SecondaryClipboard.js","../node_modules/draft-js/lib/keyCommandBackspaceToStartOfLine.js","../node_modules/draft-js/lib/expandRangeToStartOfLine.js","../node_modules/draft-js/lib/keyCommandBackspaceWord.js","../node_modules/fbjs/lib/TokenizeUtil.js","../node_modules/draft-js/lib/keyCommandDeleteWord.js","../node_modules/draft-js/lib/keyCommandInsertNewline.js","../node_modules/draft-js/lib/keyCommandMoveSelectionToEndOfBlock.js","../node_modules/draft-js/lib/keyCommandMoveSelectionToStartOfBlock.js","../node_modules/draft-js/lib/keyCommandPlainDelete.js","../node_modules/draft-js/lib/keyCommandTransposeCharacters.js","../node_modules/draft-js/lib/keyCommandUndo.js","../node_modules/draft-js/lib/editOnPaste.js","../node_modules/draft-js/lib/DraftPasteProcessor.js","../node_modules/fbjs/lib/URI.js","../node_modules/draft-js/lib/isHTMLAnchorElement.js","../node_modules/draft-js/lib/isHTMLImageElement.js","../node_modules/draft-js/lib/adjustBlockDepthForContentState.js","../node_modules/draft-js/lib/splitTextIntoTextBlocks.js","../node_modules/draft-js/lib/DraftEditorFlushControlled.js","../node_modules/draft-js/lib/DraftEditorPlaceholder.react.js","../node_modules/draft-js/lib/convertFromDraftStateToRaw.js","../node_modules/draft-js/lib/encodeEntityRanges.js","../node_modules/draft-js/lib/encodeInlineStyleRanges.js","../node_modules/draft-js/lib/convertFromRawToDraftState.js","../node_modules/draft-js/lib/DraftTreeAdapter.js","../node_modules/draft-js/lib/DraftTreeInvariants.js","../node_modules/draft-js/lib/createCharacterList.js","../node_modules/draft-js/lib/decodeEntityRanges.js","../node_modules/draft-js/lib/decodeInlineStyleRanges.js","../node_modules/draft-js/lib/getVisibleSelectionRect.js","../node_modules/draft-js/lib/getRangeBoundingClientRect.js","../node_modules/emoji-mart/dist/components/picker/nimble-picker.js","../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/emoji-mart/dist/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart/dist/components/anchors.js","../node_modules/emoji-mart/dist/components/category.js","../node_modules/emoji-mart/dist/components/not-found.js","../node_modules/emoji-mart/dist/components/preview.js","../node_modules/emoji-mart/dist/components/skins-emoji.js","../node_modules/emoji-mart/dist/components/skins-dot.js","../node_modules/emoji-mart/dist/components/search.js","../node_modules/emoji-mart/dist/utils/emoji-index/nimble-emoji-index.js","../node_modules/draft-js-emoji-mart-plugin/lib/modifiers/attachImmutableEntitiesToEmojis.js","../node_modules/draft-js-emoji-mart-plugin/node_modules/emoji-regex/index.js","../node_modules/draft-js-emoji-mart-plugin/lib/modifiers/addEmoji.js","../node_modules/draft-js-emoji-mart-plugin/lib/strategies/emoji.js","../node_modules/draft-js-emoji-mart-plugin/lib/utils/getEmojiDataFromNative.js","../node_modules/draft-js-plugins-editor/lib/utils/createEditorStateWithText.js","../node_modules/draft-js-plugins-editor/lib/utils/composeDecorators.js","../node_modules/draft-js-plugins-editor/lib/Editor/index.js","../node_modules/draft-js-plugins-editor/lib/Editor/proxies.js","../node_modules/draft-js-plugins-editor/lib/Editor/moveSelectionToEnd.js","../node_modules/draft-js-plugins-editor/lib/Editor/resolveDecorators.js","../node_modules/draft-js-plugins-editor/lib/Editor/createCompositeDecorator.js","../node_modules/draft-js-plugins-editor/lib/Editor/MultiDecorator.js","../node_modules/draft-js-plugins-editor/lib/Editor/defaultKeyBindings.js","../node_modules/draft-js-plugins-editor/lib/Editor/defaultKeyCommands.js","../moment-with-locales.js","../node_modules/@material-ui/utils/esm/deepmerge.js","../node_modules/@material-ui/styles/esm/createStyles/createStyles.js","../node_modules/is-in-browser/dist/module.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/jss/dist/jss.esm.js","../node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js","../node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","../node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js","../node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../node_modules/css-vendor/dist/css-vendor.esm.js","../node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js","../node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js","../node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js","../node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js","../node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js","../node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js","../node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","../node_modules/@material-ui/styles/esm/useTheme/useTheme.js","../node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js","../node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js","../node_modules/@material-ui/core/esm/Icon/Icon.js","../node_modules/@material-ui/icons/esm/Send.js","../node_modules/@material-ui/icons/esm/Mic.js","../node_modules/@material-ui/icons/esm/Close.js","../node_modules/@material-ui/icons/esm/Check.js","../node_modules/@material-ui/icons/esm/AttachFile.js","../node_modules/@material-ui/icons/esm/InsertEmoticon.js","../node_modules/@material-ui/icons/esm/VoiceChat.js","../node_modules/@material-ui/core/esm/Collapse/Collapse.js","../node_modules/@material-ui/icons/esm/PlayArrow.js","../node_modules/@material-ui/core/esm/Portal/Portal.js","../node_modules/@material-ui/core/esm/Grow/Grow.js","../node_modules/@material-ui/core/esm/Link/Link.js","../node_modules/@material-ui/core/esm/styles/makeStyles.js","../node_modules/@material-ui/core/esm/styles/createStyles.js","../node_modules/@material-ui/core/esm/InputAdornment/InputAdornment.js","../node_modules/@material-ui/icons/esm/Visibility.js","../node_modules/@material-ui/icons/esm/VisibilityOff.js","../node_modules/@material-ui/lab/esm/Skeleton/Skeleton.js","../node_modules/@material-ui/core/esm/FormControl/formControlState.js","../node_modules/@material-ui/core/esm/utils/debounce.js","../node_modules/@material-ui/core/esm/TextareaAutosize/TextareaAutosize.js","../node_modules/@material-ui/core/esm/InputBase/utils.js","../node_modules/@material-ui/core/esm/InputBase/InputBase.js","../node_modules/@material-ui/core/esm/Input/Input.js","../node_modules/@material-ui/core/esm/FilledInput/FilledInput.js","../node_modules/@material-ui/core/esm/OutlinedInput/NotchedOutline.js","../node_modules/@material-ui/core/esm/OutlinedInput/OutlinedInput.js","../node_modules/@material-ui/core/esm/FormControl/useFormControl.js","../node_modules/@material-ui/core/esm/FormLabel/FormLabel.js","../node_modules/@material-ui/core/esm/InputLabel/InputLabel.js","../node_modules/@material-ui/core/esm/utils/isMuiElement.js","../node_modules/@material-ui/core/esm/FormControl/FormControl.js","../node_modules/@material-ui/core/esm/FormHelperText/FormHelperText.js","../node_modules/@material-ui/core/esm/utils/ownerDocument.js","../node_modules/@material-ui/core/esm/utils/ownerWindow.js","../node_modules/@material-ui/core/esm/utils/getScrollbarSize.js","../node_modules/@material-ui/core/esm/Modal/ModalManager.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@material-ui/core/esm/Unstable_TrapFocus/Unstable_TrapFocus.js","../node_modules/@material-ui/core/esm/Modal/SimpleBackdrop.js","../node_modules/@material-ui/core/esm/Modal/Modal.js","../node_modules/@material-ui/core/esm/Paper/Paper.js","../node_modules/@material-ui/core/esm/Popover/Popover.js","../node_modules/@material-ui/core/esm/List/ListContext.js","../node_modules/@material-ui/core/esm/List/List.js","../node_modules/@material-ui/core/esm/MenuList/MenuList.js","../node_modules/@material-ui/core/esm/Menu/Menu.js","../node_modules/@material-ui/core/esm/Select/SelectInput.js","../node_modules/@material-ui/core/esm/internal/svg-icons/ArrowDropDown.js","../node_modules/@material-ui/core/esm/NativeSelect/NativeSelectInput.js","../node_modules/@material-ui/core/esm/NativeSelect/NativeSelect.js","../node_modules/@material-ui/core/esm/Select/Select.js","../node_modules/@material-ui/core/esm/TextField/TextField.js","../node_modules/@material-ui/system/esm/css.js","../node_modules/@material-ui/system/esm/compose.js","../node_modules/@material-ui/system/esm/style.js","../node_modules/@material-ui/system/esm/borders.js","../node_modules/@material-ui/system/esm/display.js","../node_modules/@material-ui/system/esm/flexbox.js","../node_modules/@material-ui/system/esm/grid.js","../node_modules/@material-ui/system/esm/positions.js","../node_modules/@material-ui/system/esm/palette.js","../node_modules/@material-ui/system/esm/shadows.js","../node_modules/@material-ui/system/esm/sizing.js","../node_modules/@material-ui/system/esm/typography.js","../node_modules/@material-ui/styles/esm/styled/styled.js","../node_modules/@material-ui/core/esm/styles/styled.js","../node_modules/@material-ui/core/esm/Box/Box.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@material-ui/core/esm/ButtonBase/Ripple.js","../node_modules/@material-ui/core/esm/ButtonBase/TouchRipple.js","../node_modules/@material-ui/core/esm/ButtonBase/ButtonBase.js","../node_modules/@material-ui/core/esm/IconButton/IconButton.js","../node_modules/@material-ui/core/esm/Popper/Popper.js","../node_modules/@material-ui/core/esm/Tooltip/Tooltip.js","../node_modules/@material-ui/core/esm/utils/unstable_useId.js","../node_modules/@material-ui/core/esm/internal/svg-icons/Person.js","../node_modules/@material-ui/core/esm/Avatar/Avatar.js","../node_modules/@material-ui/system/esm/spacing.js","../node_modules/@material-ui/system/esm/memoize.js"],"names":["module","exports","require","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_taggedTemplateLiteral","strings","raw","slice","freeze","defineProperties","value","nodes","insertRule","names","id","isCompositeComponent","flatten","_objectWithoutProperties","excluded","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","toVal","mix","k","y","str","Array","isArray","tmp","x","_slicedToArray","arr","Symbol","iterator","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","err","unsupportedIterableToArray","TypeError","withStyles","stylesOrCreator","options","Component","defaultTheme","_options$withTheme","withTheme","name","stylesOptions","classNamePrefix","useStyles","makeStyles","displayName","WithStyles","React","forwardRef","props","ref","classes","theme","innerRef","other","defaultProps","more","useTheme","getThemeProps","createElement","hoistNonReactStatics","withStylesWithoutDefault","SLICE$0","createClass","ctor","superClass","create","constructor","Iterable","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","IndexedIterable","isIndexed","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","Set","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","SetRef","OwnerID","arrCopy","offset","len","Math","max","newArr","ii","ensureSize","iter","size","__iterate","returnTrue","wrapIndex","index","uint32Index","NaN","wholeSlice","begin","end","resolveBegin","resolveIndex","resolveEnd","defaultIndex","min","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","REAL_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","type","v","iteratorResult","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","isArrayLike","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","ObjectSeq","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","ArraySeq","array","_array","object","keys","_object","_keys","IterableSeq","_iterable","IteratorSeq","_iterator","_iteratorCache","isSeq","maybeSeq","seqIterate","fn","reverse","useKeys","cache","_cache","maxIndex","entry","__iterateUncached","seqIterator","__iteratorUncached","fromJS","json","converter","fromJSWith","parentJSON","map","isPlainObj","fromJSDefault","toList","toMap","is","valueA","valueB","valueOf","equals","deepEqual","a","b","__hash","notAssociative","entries","every","flipped","cacheResult","_","allEqual","bSize","has","get","Repeat","times","_value","Infinity","invariant","condition","error","Error","Range","start","step","abs","_start","_end","_step","ceil","Collection","KeyedCollection","IndexedCollection","SetCollection","toString","KEYS","VALUES","ENTRIES","inspect","toSource","of","__toString","toArray","__iterator","notSetValue","iterations","val","includes","searchValue","lastIndexOf","this$0","possibleIndex","floor","offsetValue","imul","c","d","smi","i32","hash","o","h","STRING_HASH_CACHE_MIN_STRLEN","string","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","cachedHashString","hashCode","obj","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","node","nodeType","uniqueID","documentElement","getIENodeHash","objHashUID","set","isExtensible","defineProperty","hashJSObj","charCodeAt","e","WeakMap","assertNotInfinite","Map","emptyMap","isMap","withMutations","forEach","maybeMap","IS_MAP_SENTINEL","_root","updateMap","setIn","keyPath","updateIn","remove","deleteIn","update","updater","updatedValue","updateInDeepMap","existing","keyPathIter","isNotSet","existingValue","newValue","nextExisting","nextUpdated","forceIterator","clear","__ownerID","__altered","merge","mergeIntoMapWith","mergeWith","merger","iters","mergeIn","m","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","sort","comparator","OrderedMap","sortFactory","sortBy","mapper","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","HashArrayMapNode","count","HashCollisionNode","keyHash","ValueNode","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","prev","__prev","root","newRoot","newSize","didChangeSize","didAlter","updateNode","shift","isLeafNode","mergeIntoNode","newNode","idx1","SIZE","idx2","iterables","mergeIntoCollectionWith","nextValue","collection","filter","mergeIntoMap","popCount","idx","canEdit","newArray","removeIn","removed","exists","MAX_ARRAY_MAP_SIZE","createNodes","isEditable","newEntries","pop","bit","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","expandNodes","newBitmap","newNodes","newLen","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","keyMatch","stack","subNode","List","empty","emptyList","isList","makeList","VNode","list","setSize","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","splice","insert","values","oldSize","unshift","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","left","right","tailPos","tail","iterateNodeOrLeaf","from","to","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","maxSize","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","_map","_list","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","indexed","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","context","mappedSequence","reverseFactory","filterFactory","predicate","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedIterable","concat","singleton","concatSeq","reduce","sum","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","defaultComparator","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","steps","some","s","reify","validateEntry","resolveSize","iterableClass","Record","defaultValues","hasInitialized","RecordType","setProp","bind","setProps","RecordTypePrototype","_name","_defaultValues","RecordPrototype","valueSeq","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","record","getPrototypeOf","emptySet","isSet","add","maybeSet","IS_SET_SENTINEL","fromKeys","keySeq","updateSet","union","intersect","originalSet","subtract","OrderedSet","__make","EMPTY_SET","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Stack","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","head","_head","peek","makeStack","pushAll","EMPTY_STACK","StackPrototype","mixin","methods","keyCopier","toJS","__toJS","toJSON","toObject","toOrderedMap","toOrderedSet","toSet","toStack","__toStringMapper","join","returnValue","find","findEntry","found","findLastEntry","sideEffect","separator","joined","isFirst","reducer","initialReduction","reduction","useFirst","reduceRight","reversed","not","butLast","isEmpty","countBy","grouper","groups","countByFactory","entriesSequence","entryMapper","filterNot","findLast","first","flatMap","coerce","flatMapFactory","searchKey","getIn","searchKeyPath","nested","groupBy","isKeyedIter","groupByFactory","hasIn","isSubset","isSuperset","keyMapper","last","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashIterable","IterablePrototype","quoteString","chain","contains","noLengthWarning","console","warn","findKey","findLastKey","keyOf","lastKeyOf","mapEntries","mapKeys","KeyedIterablePrototype","JSON","stringify","defaultZipper","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","zipWith","factory","useForkRef","refA","refB","refValue","setRef","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread2","getOwnPropertyDescriptors","validateFormat","format","_len","args","_key","argIndex","replace","String","framesToPop","capitalize","_formatMuiErrorMessage","charAt","toUpperCase","_objectSpread","_defineProperty","configurable","writable","BlockTree","ContentState","EditorBidiService","SelectionState","Immutable","EditorStateRecord","allowUndo","currentContent","decorator","directionMap","forceSelection","inCompositionMode","inlineStyleOverride","lastChangeType","nativelyRenderedContent","redoStack","selection","treeMap","undoStack","EditorState","createEmpty","createWithContent","createFromText","contentState","getBlockMap","firstKey","getKey","config","recordConfig","generateNewTreeMap","getDirectionMap","editorState","put","getImmutable","state","existingDecorator","newContent","getCurrentContent","newTreeMap","content","blockMap","previousTreeMap","block","getDecorations","generate","regenerateTreeForNewDecorator","newBlockMap","newEntityMap","prevBlockMap","regenerateTreeForNewBlocks","getEntityMap","_proto","immutable","_immutable","getAllowUndo","getUndoStack","getRedoStack","getSelection","getDecorator","isInCompositionMode","mustForceSelection","getNativelyRenderedContent","getLastChangeType","getInlineStyleOverride","setInlineStyleOverride","getCurrentInlineStyle","override","isCollapsed","startKey","getStartKey","startOffset","getStartOffset","startBlock","getBlockForKey","getInlineStyleAt","getLength","lookUpwardForInlineStyle","getInlineStyleForCollapsedSelection","getInlineStyleForNonCollapsedSelection","getBlockTree","blockKey","isSelectionAtStartOfContent","hasEdgeWithin","isSelectionAtEndOfContent","acceptSelection","updateSelection","getHasFocus","moveSelectionToEnd","lastBlock","getLastBlock","lastKey","anchorKey","anchorOffset","focusKey","focusOffset","isBackward","moveFocusToEnd","afterSelectionMove","changeType","getSelectionAfter","mustBecomeBoundary","getSelectionBefore","overrideChangeTypes","editorStateChanges","undo","newCurrentContent","redo","fromKey","lastNonEmpty","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","process","__esModule","createSvgIcon","path","memo","SvgIcon","muiName","moment","default","AtomicBlockUtils","BlockMapBuilder","CharacterMetadata","CompositeDraftDecorator","ContentBlock","DefaultDraftBlockRenderMap","DefaultDraftInlineStyle","DraftEditor","DraftEditorBlock","DraftEntity","DraftModifier","DraftEntityInstance","KeyBindingUtil","RawDraftContentState","RichTextEditorUtil","convertFromDraftStateToRaw","convertFromRawToDraftState","generateRandomKey","getDefaultKeyBinding","getVisibleSelectionRect","DraftPublic","Editor","EditorBlock","CompositeDecorator","Entity","EntityInstance","Modifier","RichUtils","convertFromHTML","convertFromRaw","convertToRaw","genKey","ContentStateInlineStyle","applyEntityToContentState","getCharacterRemovalRange","getContentStateFragment","insertFragmentIntoContentState","insertTextIntoContentState","modifyBlockForContentState","removeEntitiesAtEdges","removeRangeFromContentState","splitBlockInContentState","replaceText","rangeToReplace","text","inlineStyle","entityKey","withoutEntities","withoutText","character","style","entity","insertText","targetRange","moveText","removalRange","movedFragment","afterRemoval","removeRange","replaceWithFragment","fragment","mergeBlockData","rangeToRemove","removalDirection","endKey","endBlock","getIsBackward","getFocusKey","getFocusOffset","getAnchorKey","getAnchorOffset","endOffset","getEndOffset","startEntityKey","getEntityAt","endEntityKey","adjustedRemovalRange","splitBlock","selectionState","applyInlineStyle","removeInlineStyle","setBlockType","blockType","setBlockData","blockData","data","getData","applyEntity","isUndefined","isObject","isFunction","l","isArrayBuffer","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","result","assignValue","deepMerge","extend","thisArg","trim","UserAgentData","VersionRange","mapObject","memoizeStringOnly","compare","version","query","normalizer","startsWith","range","normalizePlatformVersion","platformName","UserAgent","isBrowser","browserName","browserFullVersion","isBrowserArchitecture","browserArchitecture","isDevice","deviceName","isEngine","engineName","engineVersion","isPlatform","platformFullVersion","isPlatformArchitecture","platformArchitecture","_toConsumableArray","arrayLikeToArray","_require","defaultRecord","_CharacterMetadataRec","subClass","__proto__","getStyle","getEntity","hasStyle","applyStyle","withStyle","removeStyle","withoutStyle","withEntity","EMPTY","configMap","pool","newCharacter","_ref","findRangesImmutable","parent","characterList","children","prevSibling","nextSibling","haveEqualStyle","charA","charB","haveEqualEntity","decorateCharacterList","ContentBlockNode","getType","getText","getCharacterList","getDepth","getChildKeys","getParentKey","getPrevSiblingKey","getNextSiblingKey","findStyleRanges","filterFn","callback","findEntityRanges","current","clamp","decomposeColor","color","substr","re","RegExp","colors","match","n","parseInt","round","hexToRgb","marker","substring","split","parseFloat","recomposeColor","getContrastRatio","foreground","background","lumA","getLuminance","lumB","rgb","f","hslToRgb","pow","Number","toFixed","fade","darken","coefficient","lighten","seenKeys","MULTIPLIER","isNaN","random","instance","Constructor","_defineProperties","descriptor","protoProps","staticProps","useThemeWithoutDefault","iterableToArray","arrayWithHoles","nonIterableRest","FormControlContext","useFormControl","useEnhancedEffect","useEventCallback","propIsEnumerable","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","DraftOffsetKey","encode","decoratorKey","leafKey","decode","offsetKey","_offsetKey$split$reve","_typeof","assertThisInitialized","self","_getPrototypeOf","setPrototypeOf","_interopRequireDefault","_react","_SvgIcon","_extends2","__DRAFT_GKX","_objectWithoutPropertiesLoose","sourceKeys","acc","item","deepmerge","clone","createBreakpoints","breakpoints","_breakpoints$values","xs","sm","md","lg","xl","_breakpoints$unit","unit","_breakpoints$step","up","between","endIndex","down","upperbound","only","width","createMixins","spacing","mixins","_toolbar","gutters","styles","paddingLeft","paddingRight","toolbar","minHeight","common","black","white","grey","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","indigo","pink","red","orange","blue","green","light","primary","secondary","disabled","hint","divider","paper","action","active","hover","hoverOpacity","selected","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","dark","icon","addLightOrDark","intent","direction","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","main","createPalette","palette","_palette$primary","_palette$secondary","_palette$error","_palette$warning","warning","_palette$info","info","_palette$success","success","_palette$type","_palette$contrastThre","contrastThreshold","_palette$tonalOffset","getContrastText","augmentColor","mainShade","lightShade","darkShade","contrastText","types","caseAllCaps","textTransform","createTypography","typography","_ref$fontFamily","fontFamily","_ref$fontSize","fontSize","_ref$fontWeightLight","fontWeightLight","_ref$fontWeightRegula","fontWeightRegular","_ref$fontWeightMedium","fontWeightMedium","_ref$fontWeightBold","fontWeightBold","_ref$htmlFontSize","htmlFontSize","allVariants","pxToRem2","pxToRem","coef","buildVariant","fontWeight","lineHeight","letterSpacing","casing","variants","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","createShadow","shadows","shape","borderRadius","createSpacing","spacingInput","mui","transform","createUnarySpacing","argument","output","createMuiTheme","_options$breakpoints","breakpointsInput","_options$mixins","mixinsInput","_options$palette","paletteInput","_options$typography","typographyInput","muiTheme","overrides","transitions","zIndex","createChainedFunction","funcs","func","_len2","_key2","ContentBlockRecord","_ContentBlockRecord","classNames","className","ownerDocument","Node","ELEMENT_NODE","SURROGATE_UNITS_REGEX","isCodeUnitInSurrogateRange","codeUnit","hasSurrogateUnit","test","getUTF16Length","pos","posA","posB","UnicodeUtils","getCodePoints","codePoints","codePointAt","isSurrogatePair","second","strlen","ReferenceError","getEmojiDataFromNative","nativeString","compressed","_data","uncompress","skin","skinCode","emojiData","skinCodes","baseNativeString","skinTone","skinToneIndex","emojis","emoji","emojiUnified","unified","variations","skin_variations","unifiedToNative","short_names","getSanitizedData","uniq","uniqA","uniqB","originalValue","_typeof2","measureScrollbar","div","height","overflow","position","top","body","appendChild","scrollbarWidth","offsetWidth","clientWidth","removeChild","throttleIdleTask","doIdleTask","requestIdleCallback","setTimeout","running","_stringFromCodePoint","COLONS_REGEX","SKINS","u","sanitize","skin_tone","emoticons","custom","customCategory","imageUrl","colons","toLowerCase","matches","aliases","search","buildSearch","parse","skinKey","variationData","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","objectPrototype","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","_inheritsLoose","reflow","scrollTop","getTransitionProps","timeout","_props$style","duration","transitionDuration","mode","delay","transitionDelay","g","Function","_classCallCheck","_createClass","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","url","tel","email","password","number","date","month","week","time","datetime","handleKeyDown","event","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","visibilityState","isFocusVisible","tagName","readOnly","isContentEditable","focusTriggersKeyboardModality","handleBlurVisible","clearTimeout","useIsFocusVisible","onBlurVisible","doc","ReactDOM","addEventListener","_props$color","_props$component","_props$fontSize","htmlColor","titleAccess","_props$viewBox","viewBox","clsx","focusable","role","userSelect","display","fill","flexShrink","transition","shorter","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeLarge","createContext","createFromArray","blocks","haystack","areEqualFn","foundFn","cursor","nextIndex","defaultView","HTMLElement","experimentalTreeDataSupport","gkx","strategy","anchorBlock","anchorBlockSibling","compress","mapping","non_qualified","has_img_apple","has_img_google","has_img_twitter","has_img_facebook","keywords","sheet","added_in","addToSearch","short_name","sheet_x","sheet_y","_defineProperty2","_propTypes","_utils","_sharedProps","_sharedDefaultProps","_getData","_getPosition","_getData2","multiplyX","sheetColumns","multiplyY","sheetRows","_getSanitizedData","_isNumeric","NimbleEmoji","fallback","nativeEmoji","label","Boolean","title","tooltip","forceSize","wordBreak","spriteUrl","backgroundImage","backgroundSize","backgroundPosition","backgroundRepeat","backgroundImageFn","sheetSize","Tag","onClick","useButton","html","getAttribute","_convertStyleToCSS","_handleClick","onMouseEnter","onOver","_handleOver","onMouseLeave","onLeave","_handleLeave","EmojiPropTypes","isRequired","EmojiDefaultProps","_default","_arrayLikeToArray","arr2","_assertThisInitialized","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","Item","noop","nextTick","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","randomizeBlockMapKeys","getEndKey","blockKeys","startIndex","chars","uuid","instances","instanceKey","logWarning","oldMethodCall","newMethodCall","getLastCreatedEntityKey","__getLastCreatedEntityKey","mutability","__create","__add","__get","__getAll","__loadWithEntities","entities","mergeData","toMerge","__mergeData","replaceData","newData","__replaceData","newInstance","_SelectionStateRecord","serialize","selectionStart","selectionEnd","offsetToCheck","hasFocus","globalDir","isStrong","getHTMLDir","setGlobalDir","UnicodeBidiDirection","NEUTRAL","LTR","RTL","getHTMLDirIfDifferent","otherDir","initGlobalDir","getGlobalDir","getCorrectDocumentFromNode","getSelectionOffsetKeyForNode","searchNode","parentNode","BACKSPACE","TAB","RETURN","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","COMMA","PERIOD","A","Z","ZERO","NUMPAD_0","NUMPAD_9","_isNodeScrollable","element","Style","getScrollParent","parentWindow","getDocumentScrollElement","getUnboundedScrollPosition","scrollable","documentScrollElement","Window","scrollPosition","viewport","xMax","scrollWidth","yMax","scrollHeight","clientHeight","_unsupportedIterableToArray","minLen","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","Promise","then","_asyncToGenerator","defaultBreakpoints","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","_themeBreakpoints","breakpoint","easing","easeInOut","easeOut","easeIn","sharp","shortest","short","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","_options$duration","durationOption","_options$easing","easingOption","_options$delay","animatedProp","getAutoHeightDuration","constant","mobileStepper","speedDial","appBar","drawer","modal","snackbar","useControlled","controlled","defaultProp","isControlled","_React$useState","valueState","setValue","_possibleConstructorReturn","getOwnObjectValues","sanitizeDraftText","ImmutableMap","ContentStateRecord","entityMap","selectionBefore","selectionAfter","ContentBlockNodeRecord","_ContentStateRecord","getKeyBefore","getKeyAfter","getBlockAfter","getBlockBefore","getBlocksAsArray","getFirstBlock","getPlainText","delimiter","hasText","escape","createEntity","mergeEntityData","replaceEntityData","addEntity","getAllEntities","loadWithEntities","createFromBlockArray","theBlocks","contentBlocks","createContentBlockFromJS","RANGE_BY_BIDI_TYPE","REGEX_STRONG","REGEX_RTL","firstStrongChar","exec","firstStrongCharDir","strongChar","resolveBlockDir","blockDir","getDirection","strongFallback","UnicodeBidi","isDirectionLTR","isDirectionRTL","cx","section","article","wrapper","blockquote","atomic","unstyled","aliasedElements","notEmptyKey","filterKey","getMutability","targetSelection","isTextNode","containsNode","outerNode","innerNode","compareDocumentPosition","_isViewportScrollElement","Scroll","getTop","setTop","newTop","getLeft","scrollLeft","setLeft","newLeft","maxDistance","keyBefore","isSoftNewlineEvent","isOSX","isCtrlKeyCommand","isOptionKeyCommand","usesMacOSHeuristics","hasCommandModifier","getter","setter","NAMESPACE","isLocalStorageSupported","localStorage","setNamespace","namespace","setHandlers","handlers","webpackPolyfill","deprecate","paths","hookCallback","hooks","input","hasOwnProp","isObjectEmpty","Date","res","createUTC","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","t","momentProperties","updateInProgress","copyConfig","prop","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","formatMoment","expandFormat","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","w","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","loadLocale","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","j","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","extractFromRFC2822Strings","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","millisecond","configFromObject","configFromInput","isUTC","createFromConfig","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","days","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","cloneWithOffset","model","diff","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","base","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","period","addSubtract","isAdding","invalid","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","property","objectTest","propertyTest","properties","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","toDate","toISOString","keepOffset","prefix","suffix","zone","isLocal","for","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","memoize","reactPropsRegex","utils","encodeURIComponent","params","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","adapter","XMLHttpRequest","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","method","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","request","auth","username","Authorization","btoa","fullPath","baseURL","open","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","cancel","abort","send","enhanceError","message","code","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","axiosKeys","otherKeys","Cancel","lastRootBlock","newKeysRef","blockMapState","oldKey","nextKey","prevKey","childrenKeys","parentKey","parentChildrenList","childKey","child","randomizeContentBlockNodeKeys","randomizeContentBlockKeys","removeForBlock","charBefore","charAfter","entityBeforeCursor","entityAfterCursor","_getRemovalRange","characters","getRemovalRange","updatedBlocks","updatedStart","updatedEnd","targetListArg","toInsert","targetList","operation","newBlocks","nextSiblingKey","nextNonDescendantBlock","_DraftEntityInstanceR","REGEX_BLOCK_DELIMITER","BOLD","CODE","wordWrap","ITALIC","fontStyle","STRIKETHROUGH","textDecoration","UNDERLINE","isElement","castedNode","childNodes","childOffsetKey","DraftJsDebugLogging","getContentEditableContainer","getDraftEditorSelection","editor","_blockSelectEvents","_latestEditorState","logBlockedSelectionEvent","anonymizedDom","extraParams","stacktrace","documentSelection","updatedSelectionState","needsRecovery","logSelectionStateFailure","isHTMLElement","editorNode","editorContainer","firstChild","getDraftEditorSelectionWithNodes","anchorNode","focusNode","rangeCount","findAncestorOffsetKey","getUpdatedSelectionState","nullthrows","getPointForNonTextNode","editorRoot","startNode","childOffset","firstLeaf","getFirstLeaf","nodeBeforeCursor","textLength","lastLeaf","lastChild","getLastLeaf","getTextContentLength","textContent","anchorIsTextNode","TEXT_NODE","focusIsTextNode","anchorPoint","focusPoint","nodeName","anchorPath","anchorBlockKey","anchorLeafBlockTree","anchorLeaf","focusPath","focusBlockKey","focusLeafBlockTree","focusLeaf","anchorLeafStart","focusLeafStart","anchorBlockOffset","focusBlockOffset","anchorLeafEnd","focusLeafEnd","_assign","DraftEditorTextNode","isHTMLBRElement","setDraftEditorSelection","DraftEditorLeaf","_React$Component","_this","_setSelection","_this$props","leaf","targetNode","shouldComponentUpdate","nextProps","leafNode","styleSet","componentDidUpdate","componentDidMount","_this2","endsWith","isLast","_this$props2","customStyleMap","customStyleFn","styleObj","styleName","mergedStyles","newStyles","initODS","handleExtensionCausedError","activeElement","getElementRect","rect","bottom","getViewportWidth","getViewportHeight","getViewportDimensions","innerWidth","innerHeight","withoutScrollbars","getElementPosition","getScrollPosition","isBlockOnSelectionEdge","tree","preventScroll","blockNode","_node","scrollDelta","scrollParent","nodePosition","scrollTo","offsetHeight","offsetTop","_renderChildren","lastLeafSet","hasSelection","leafSet","leavesForLeafSet","leaves","jj","DecoratorComponent","getComponentForKey","decoratorProps","getPropsForKey","decoratorOffsetKey","decoratedText","commonProps","_this3","PhotosMimeType","createArrayFromMixed","emptyFunction","CR_LF_REGEX","RICH_TEXT_TYPES","getFileFromDataTransfer","kind","getAsFile","DataTransfer","isRichText","getHTML","isImage","isLink","getLink","items","getFiles","getCount","mozItemCount","files","thatReturnsArgument","hasFiles","makeEmptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","TEXT_CLIPPING_REGEX","TEXT_TYPES","readCount","results","file","global","FileReader","_contents","reader","onload","readAsText","readFile","moveSelectionBackward","removeTextWithStrategy","strategyState","charBehind","getRangeClientRects","tempRange","cloneRange","clientRects","ancestor","endContainer","atCommonAncestor","commonAncestorContainer","setStart","startContainer","rects","getClientRects","setEndBefore","WHITESPACE_AND_PUNCTUATION","getPunctuation","DELETE_REGEX","BACKSPACE_REGEX","getRemovableWord","DraftRemovableWord","getBackward","getForward","_knownListItemDepthCl","URI","getSafeBodyFromHTML","isHTMLAnchorElement","isHTMLImageElement","REGEX_CR","REGEX_LF","REGEX_LEADING_LF","REGEX_NBSP","REGEX_CARRIAGE","REGEX_ZWS","boldValues","notBoldValues","anchorAttr","imgAttr","knownListItemDepthClasses","HTMLTagToRawInlineStyleMap","del","em","strike","strong","mark","buildBlockTypeMap","blockRenderMap","blockTypeMap","desc","elements","detectInlineStyle","getListItemDepth","depthClass","classList","isValidAnchor","href","protocol","isValidImage","imageNode","attributes","getNamedItem","styleFromNodeAttributes","htmlElement","isListNode","ContentBlocksBuilder","disambiguate","blockConfigs","currentBlockType","currentEntity","currentText","addDOMNode","_this$blockConfigs","_toBlockConfigs","_trimCurrentText","_makeBlockConfig","getContentBlocks","_toContentBlocks","_toFlatContentBlocks","childConfigs","wasCurrentDepth","wasWrapper","_addImgNode","_addAnchorNode","newStyle","_addBreakNode","_addTextNode","_wasCurrentDepth","_wasWrapper","_appendText","_this$characterList","characterMetadata","trimLeft","trimRight","image","entityConfig","attr","imageAttribute","anchorAttribute","_hoistContainersInBlockConfigs","blockConfig","_this2$_extractTextFr","_extractTextFromBlockConfigs","DOMBuilder","safeBody","tag","isOldIE","implementation","createHTMLDocument","innerHTML","getElementsByTagName","adjustBlockDepthForContentState","currentBlockContainsLink","getCurrentBlockType","getDataObjectForLinkURL","uri","handleKeyCommand","command","eventTimeStamp","toggleInlineStyle","toggleCode","onBackspace","onDelete","insertSoftNewline","newEditorState","blockBefore","withoutAtomicBlock","withoutBlockStyle","tryToRemoveBlockStyle","blockAfter","atomicBlockTarget","onTab","maxDepth","preventDefault","shiftKey","withAdjustment","toggleBlockType","typeToSet","currentStyle","toggleLink","withoutLink","Keys","shouldFixFirefoxMovement","shouldRemoveWord","keyCode","getZCommand","getDeleteCommand","getBackspaceCommand","DraftStringKey","unstringify","categories","activity","xmlns","rx","foods","nature","objects","people","places","recent","opacity","frequently","initialized","_store","DEFAULTS","init","perLine","quantity","frequentlyKeys","sliced","PickerPropTypes","bool","oneOf","oneOfType","onSelect","onSkinChange","emojiSize","i18n","emojisToShowFilter","showPreview","showSkinTones","emojiTooltip","include","arrayOf","exclude","autoFocus","enableFrequentEmojiSort","skinEmoji","notFound","notFoundEmoji","icons","PickerDefaultProps","defaultSkin","_classCallCheck2","_createClass2","_possibleConstructorReturn2","_getPrototypeOf2","_inherits2","Skins","_React$PureComponent","opened","currentTarget","onChange","setState","PureComponent","contentBlock","matchArr","unicodeEmojiRegexp","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","NumberIsNaN","EventEmitter","emitter","eventListener","errorListener","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","copy","RangeError","setMaxListeners","getMaxListeners","doError","er","handler","originalListener","spliceOne","rawListeners","eventNames","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","stylis_min","X","ia","F","P","ja","ka","aa","G","ba","la","ma","na","ea","oa","H","q","S","B","U","D","z","C","K","r","I","J","p","N","ca","O","da","fa","Y","ha","Q","use","T","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","order","orphans","tabSize","widows","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","_iterableToArray","_arrayWithHoles","_nonIterableRest","_onChange","_ref$emojiSize","_ref$sheetSize","getEmoji","_getEmojiDataFromNative","store","getEditorState","setEditorState","EmojiComponent","_ref2","foundedEmoji","_nimbleEmoji","handleEmoji","emojiSymbol","_addEmoji","native","PickerComponent","_nimblePicker","decorators","_emoji","Emoji","Picker","initialize","_ref3","willUnmount","modifiers","addEmoji","_attachImmutableEntitiesToEmojis","_draftJs","composeDecorators","createEditorStateWithText","_createEditorStateWithText2","_composeDecorators2","_Editor2","new_short","Int16Array","new_int$1","Int32Array","new_float$1","Float32Array","Arrays$1","fromIndex","toIndex","System$1","src","srcPos","dest","destPos","srcEnd","Util$1","ShortBlock$1","SQRT2","FAST_LOG10","log10","FAST_LOG10_X","short_block_allowed","short_block_coupled","short_block_dispensed","short_block_forced","Float$1","VbrMode$1","MAX_VALUE","vbr_off","vbr_mt","vbr_rh","vbr_abr","vbr_mtrh","vbr_default","new_array_n$1","sz","Int8Array","Float64Array","new_float_n$1","new_int_n$1","new_short_n","System$6","System","Util$6","Util","Arrays$6","Arrays","new_float$6","new_float","NewMDCT_1","enwindow","win","tantab_l","Encoder_1","SHORT_TYPE","cs","window_subband","x1","x1Pos","xr","wp","x2","mdct_short","inout","inoutPos","tc0","tc1","tc2","ts0","ts1","ts2","mdct_long","outPos","_in","ct","st","tc3","tc4","ts5","ts6","ts7","ts8","ts3","ts4","tc5","tc6","tc7","tc8","mdct_sub48","gfc","w0","w1","wk","wkPos","ch","channels_out","gr","mode_gr","band","gi","l3_side","tt","mdct_enc","mdct_encPos","samp","sb_sample","sampPos","block_type","band0","band1","mixed_block_flag","amp_filter","work","bu","bd","arraycopy","System$7","new_float$7","new_float_n$7","new_float_n","III_psy_xmin_1","SBMAX_l","SBMAX_s","iii_psy_xmin","III_psy_ratio_1","thm","en","System$5","VbrMode$5","VbrMode","new_array_n$5","new_array_n","new_float$5","new_float_n$5","new_int$5","new_int","assert$5","assert","Encoder$2","NewMDCT","III_psy_ratio","FFTOFFSET","MPG_MD_MS_LR","bs","psy","vbr","qupvt","setModules","_bs","_psy","_qupvt","_vbr","newMDCT","lame_encode_mp3_frame","gfp","inbuf_l","inbuf_r","mp3buf","mp3bufPos","mp3buf_size","mp3count","masking_LR","masking","masking_MS","pe_use","inbuf","internal_flags","tot_ener","ms_ener_ratio","pe","pe_MS","lame_encode_frame_init","primebuff0","primebuff1","mf_size","BLKSIZE","framesize","padding","slot_lag","frac_SpF","out_samplerate","psymodel","bufp","bufpPos","blocktype","VBR","L3psycho_anal_vbr","L3psycho_anal_ns","MPEGMode","JOINT_STEREO","cod_info","NORM_TYPE","gr2_max","max_pow","ATH","useAdjust","loudness_sq","aaSensitivityP","adjust","adjustLimit","adj_lim_new","adjust_ATH","mode_ext","MPG_MD_LR_LR","force_ms","sum_pe_MS","sum_pe_LR","gi0","gi1","analysis","pinfo","ms_ratio","ers","energy","nsPsy","pefirbuf","fircoef","iteration_loop","format_bitstream","copy_buffer","bWriteVbrTag","addVbrFrame","pcmdata","set_frame_pinfo","bitrate_index","bitrate_stereoMode_Hist","bt","bitrate_blockType_Hist","updateStats","ENCDELAY","POSTDELAY","MDCTDELAY","DECDELAY","SBLIMIT","CBANDS","SBPSY_l","SBPSY_s","PSFB21","PSFB12","HBLKSIZE","BLKSIZE_s","HBLKSIZE_s","START_TYPE","STOP_TYPE","MPG_MD_LR_I","MPG_MD_MS_I","Util$4","new_float$4","FFT_1","window_s","costab","fht","fz","fzPos","k4","fi","tri","s1","c1","k1","k2","k3","kx","f1","f0","f3","f2","c2","s2","g0","g1","g2","g3","rv_tbl","fft_short","x_real","chn","bufPos","fft_long","init_fft","cos","PI","VbrMode$3","Float$3","Float","ShortBlock$3","ShortBlock","Util$3","Arrays$3","new_float$3","new_float_n$3","new_int$3","assert$3","PsyModel_1","fft","LOG10","VO_SCALE","psycho_loudness_approx","loudness_power","eql_w","compute_ffts","fftenergy","fftenergy_s","wsamp_l","wsamp_lPos","wsamp_s","wsamp_sPos","gr_out","im","totalenergy","energy_save","athaa_loudapprox","loudness_sq_save","ma_max_i1","ma_max_i2","ma_max_m","tab","table1","table2","table3","mask_add","m1","m2","kk","shortblock","ratio","cb_s","cb_l","table2_","vbrpsy_mask_add","convert_partition2scalefac_s","eb","thr","sblock","sb","enn","thmm","bo_s_sb","bo_s","npart_s","b_lim","w_curr","PSY","bo_s_weight","w_next","convert_partition2scalefac_l","bo_l_sb","bo_l","npart_l","bo_l_weight","compute_masking_s","ebb","numlines_s","el","s3ind_s","ecb","s3_ss","nb_s1","blocktype_old","nb_s2","NS_INTERP","regcoef_s","pecalc_s","mr","masking_lower","pe_s","regcoef_l","pecalc_l","pe_l","calc_energy","avg","numlines_l","rnumlines_l","calc_mask_index_l","mask_idx","last_tab_entry","vbrpsy_compute_fft_l","vbrpsy_compute_fft_s","vbrpsy_compute_loudness_approximation_l","masking_ratio","masking_MS_ratio","percep_entropy","percep_MS_entropy","blocktype_d","numchn","pcfact","msfix","wsamp_L","wsamp_S","eb_l","eb_s","uselongblock","ns_hpfsmpl","mask_idx_l","mask_idx_s","ResvMax","ResvSize","firbuf","firbufPos","sum1","sum2","attackThreshold","en_subshort","en_short","attack_intensity","ns_uselongblock","ns_attacks","last_en_subshort","pf","pfPos","pfe","ers_save","attackthre_s","attackthre","lastAttacks","s3ind","eb2","s3_ll","nb_1","nb_2","STEREO","interChRatio","calc_interchannel_masking","mld","mld_l","rmid","rside","mld_s","msfix1","athadjust","msfix2","athlower","ath","bm_l","thmLR","thmM","thmS","bm_s","ns_msfix","ATHlower","short_blocks","block_type_set","ppe","ppePos","fircoef_","vbrpsy_skip_masking_s","vbrpsy_skip_masking_l","vbrpsy_compute_masking_s","float","int","psyvbr_calc_mask_index_s","dd_n","avg_mask","minval_s","vbrpsy_compute_masking_l","ecb_limit","ecb_limit_2","ecb_limit_1","minval_l","vbrpsy_compute_MS_thresholds","cb_mld","ath_cb","ebM","ebS","thmL","thmR","mld_m","thmMS","s3_func_x","bark","hf_slope","tempy","exp","norm_s3_func_x","lim_a","lim_b","s3_func","tempx","sqrt","freq2bark","freq","atan","init_numline","numlines","bo","bm","bval","bval_width","bo_w","sfreq","blksize","scalepos","deltafreq","sbmax","b_frq","sample_freq_frac","partition","ni","j2","bark1","sfb","i1","i2","f_tmp","bark2","init_s3_values","npart","norm","use_old_s3","s3","numberOfNoneZero","s3_x_norm","stereo_demask","ATHformula_GB","sub_short_factor","n_chn_psy","n_chn_out","factor","vbrpsy_attack_detection","vbrpsy_compute_block_type","ch01","mld_cb_l","mld_cb_s","new_thmm","NS_PREECHO_ATT1","NS_PREECHO_ATT2","vbrpsy_apply_block_type","psymodel_init","useOldS3","bvl_a","snr_l_a","snr_l_b","snr_s_a","snr_s_b","experimentalZ","ms_ener_ratio_old","scalefac_band","snr","ATHformula","log","MLIMIT","decay","exp_nspsytune","frame_duration","ATHtype","freq_inc","eql_balance","ATHcurve","MPEGMode$1","DUAL_CHANNEL","MONO","MPEGMode_1","LameGlobalFlags_1","class_id","num_samples","num_channels","in_samplerate","scale","scale_left","scale_right","decode_only","quality","free_format","findReplayGain","decode_on_the_fly","write_id3tag_automatic","brate","compression_ratio","copyright","original","extension","emphasis","error_protection","strict_ISO","disable_reservoir","quant_comp","quant_comp_short","experimentalY","preset","VBR_q_frac","VBR_q","VBR_mean_bitrate_kbps","VBR_min_bitrate_kbps","VBR_max_bitrate_kbps","VBR_hard_min","lowpassfreq","highpassfreq","lowpasswidth","highpasswidth","maskingadjust","maskingadjust_short","ATHonly","ATHshort","noATH","athaa_type","athaa_sensitivity","useTemporal","tune","tune_value_a","encoder_delay","encoder_padding","frameNum","lame_allocated_gfp","L3Side$1","SFBMAX","L3Side_1","new_float$10","new_int$10","GrInfo_1","l3_enc","scalefac","xrpow_max","part2_3_length","big_values","count1","global_gain","scalefac_compress","table_select","subblock_gain","region0_count","region1_count","preflag","scalefac_scale","count1table_select","part2_length","sfb_lmax","sfb_smin","psy_lmax","sfbmax","psymax","sfbdivide","count1bits","sfb_partition_table","slen","max_nonzero_coeff","clone_int","new_int$9","IIISideInfo_1","main_data_begin","private_bits","resvDrain_pre","resvDrain_post","scfsi","System$11","new_int$11","ScaleFac_1","arrL","arrS","arr21","arr12","psfb21","psfb12","new_float$12","new_float_n$12","new_int$12","NsPsy_1","longfact","shortfact","VBRSeekInfo_1","seen","want","bag","nVbrNumFrames","nBytesWritten","TotalFrameSize","new_byte$8","new_byte","new_double$8","new_double","new_float$8","new_float_n$8","new_int$8","new_int_n$8","new_int_n","LameInternalFlags$1","Header","write_timing","ptr","buf","Class_ID","iteration_init_init","fill_buffer_resample_init","mfbuf","MFSIZE","channels_in","resample_ratio","mf_samples_to_encode","VBR_min_bitrate","VBR_max_bitrate","samplerate_index","lowpass1","lowpass2","highpass1","highpass2","noise_shaping","noise_shaping_amp","substep_shaping","noise_shaping_stop","use_best_huffman","full_outer_loop","tag_spec","nMusicCRC","OldValue","CurrentStep","bv_scf","pseudohalf","sfb21_extra","inbuf_old","blackfilt","BPC","itime","sideinfo_len","header","MAX_HEADER_BUF","h_ptr","w_ptr","ancillary_flag","numlines_s_num1","numlines_l_num1","ms_ratio_s_old","ms_ratio_l_old","VBR_seek_table","nogap_total","nogap_current","findPeakSample","PeakSample","RadioGain","AudiophileGain","rgdata","noclipGainChange","noclipScale","hip","in_buffer_nsamples","in_buffer_0","in_buffer_1","MAX_BITS_PER_CHANNEL","MAX_BITS_PER_GRANULE","LameInternalFlags_1","new_float$13","ATH_1","System$15","Arrays$15","GainAnalysis$1","YULE_ORDER","MAX_SAMP_FREQ","RMS_WINDOW_TIME_NUMERATOR","RMS_WINDOW_TIME_DENOMINATOR","ABYule","MAX_SAMPLES_PER_WINDOW","ABButter","filterYule","inputPos","outputPos","nSamples","kernel","filterButter","fsqr","InitGainAnalysis","rgData","samplefreq","MAX_ORDER","linprebuf","lstepbuf","loutbuf","rinprebuf","rstepbuf","routbuf","reqindex","INIT_GAIN_ANALYSIS_ERROR","sampleWindow","lsum","rsum","totsamp","ill","INIT_GAIN_ANALYSIS_OK","ResetSampleFrequency","linpre","rinpre","lstep","rstep","lout","rout","AnalyzeSamples","left_samples","left_samplesPos","right_samples","right_samplesPos","curleft","curleftBase","curright","currightBase","batchsamples","cursamples","cursamplepos","GAIN_ANALYSIS_OK","GAIN_ANALYSIS_ERROR","STEPS_per_dB","ival","GetTitleGain","retval","elems","GAIN_NOT_ENOUGH_SAMPLES","upper","analyzeResult","MAX_dB","GainAnalysis_1","new_float$14","new_int$14","ReplayGain_1","freqindex","MeanBits_1","meanBits","bits","new_float$16","new_int$16","assert$16","CBRNewIterationLoop_1","_quantize","quantize","max_bits","l3_xmin","xrpow","targ_bits","mean_bits","mb","rv","ResvFrameBegin","on_pe","ms_convert","reduce_side","masking_lower_db","mask_adjust","mask_adjust_short","init_outer_loop","init_xrpow","calc_xmin","outer_loop","iteration_finish_one","ResvFrameEnd","HuffCodeTab","hl","xlen","linmax","table","hlen","Tables$1","ht","t1HB","t1l","t2HB","t2l","t3HB","t3l","t5HB","t5l","t6HB","t6l","t7HB","t7l","t8HB","t8l","t9HB","t9l","t10HB","t10l","t11HB","t11l","t12HB","t12l","t13HB","t13l","t16_5l","t15HB","t15l","t16HB","t16l","t24HB","t24l","t32HB","t32l","t33HB","t33l","largetbl","table23","table56","bitrate_table","samplerate_table","scfsi_band","Tables_1","VbrMode$19","Float$19","Util$19","new_float$19","new_int$19","assert$19","QuantizePVT$1","tak","_tk","_rv","IPOW20","Q_MAX","ipow20","PRECALC_SIZE","IXMAX_VAL","Q_MAX2","LARGE_BITS","nr_of_sfb_block","pretab","sfBandIndex","pow20","pow43","adj43","ATHmdct","StartLine","iteration_init","ATH_l","ATH_psfb21","ATH_s","ATH_psfb12","samp_freq","ATH_f","compute_ath","bass","alto","treble","sfb21","huffman_init","cbr","tbits","add_bits","extra_bits","ResvMaxBits","fac","move_bits","athAdjust","athFloor","pxmin","gsfb","pxminPos","ath_over","enable_athaa_fix","rh1","xmin","rh2","en0","xa","xb","max_nonzero","BitStream","EQ","tmpATH","calc_noise_core","startline","noise","ix","ix01","calc_noise","distort","prev_noise","distortPos","l3_xminPos","over","over_noise_db","tot_noise_db","max_noise","scalefacPos","over_SSD","noise_log","usefullsize","sl","over_count","tot_noise","over_noise","set_pinfo","sfb2","en1","ifqstep","L3Side","xfsf","CalcNoiseResult","bw","LAMEsfb","en_s","xfsf_s","thr_s","LAMEsfb_s","LAMEqss","LAMEmainbits","LAMEsfbits","QuantizePVT_1","System$18","Arrays$18","new_int$18","assert$18","Takehiro_1","Takehiro$1","Bits","subdv_table","quantize_lines_xrpow_01","istep","xrPos","ixPos","compareval0","quantize_lines_xrpow","remaining","x0","x3","rx0","rx1","rx2","rx3","huf_tbl_noESC","choose_table","endPos","max1","max2","ix_max","hlen1","count_bit_noESC","t1","count_bit_noESC_from2","sum3","hlen2","hlen3","count_bit_noESC_from3","choice2","choice","t2","linbits","count_bit_ESC","recalc_divide_sub","cod_info2","r01_bits","r01_div","r0_tbl","r1_tbl","bigv","r2","a2","bi","r2t","noquant_count_bits","sfb_count1","a1","best_huffman_divide","count_bits","xp","pi","codInfo","prevNoise","prev_data_use","accumulate","accumulate01","xpPos","iData","iDataPos","acc_iData","acc_iDataPos","acc_xp","acc_xpPos","quantize_xrpow","gain","roundfac","r0","r0bits","r0t","r1","r1t","recalc_divide_init","slen1_n","slen2_n","slen1_tab","slen2_tab","best_scalefac_store","recalc","scfsi_calc","scale_bitcount","scale_bitcount_lsf","scale_short","scale_mixed","scale_long","max_slen1","max_slen2","all_scalefactors_not_negative","max_range_sfac_tab","table_number","row_in_table","nr_sfb","max_sfac","partition_table","slen1","slen2","slen3","slen4","log2tab","printf","bv_index","scfb_anz","System$17","Arrays$17","new_byte$17","new_float_n$17","new_int$17","assert$17","BitStream$1","ga","mpg","ver","_ga","_mpg","_ver","totbit","bufByteIdx","bufBitIdx","putheader_bits","putbits2","MAX_LENGTH","Lame","LAME_MAXMP3BUFFER","putbits_noheaders","drain_into_ancillary","remainingBits","getLameShortVersion","writeheader","CRC_update","crc","huffman_coder_count1","huffbits","Huffmancode","tableindex","cbits","xbits","ext","linbits_x1","linbits_x2","ShortHuffmancodebits","region1Start","LongHuffmancodebits","bigvalues","region2Start","TotalBytes","compute_flushbits","total_bytes_output","flushbits","remaining_headers","bitsPerFrame","last_ptr","first_ptr","getframebits","println","bit_rate","CRC_writeheader","byte","flush_bitstream","NEQ","GainAnalysis","add_dummy_byte","old","encodeSideInfo2","data_bits","tot_bits","sfb_partition","scale_bits","sfbs","writeMainData","bufferPos","mp3data","minimum","updateMusicCRC","pcm_buf","mp3_in","samples_out","hip_decode1_unclipped","init_bit_stream_w","BitStream_1","System$2","VbrMode$2","ShortBlock$2","new_float$2","new_int_n$2","new_short_n$1","assert$2","Lame_1","Lame$1","qu","V9","V8","V7","V6","V5","V4","V3","V2","V1","V0","R3MIX","STANDARD","EXTREME","INSANE","STANDARD_FAST","EXTREME_FAST","MEDIUM","MEDIUM_FAST","id3","mpglib","LowPassHighPass","lowerlimit","BandPass","bitrate","lPass","lowpass","filter_coef","SmpFrqIndex","sample_freq","gpf","FindNearestBitrate","bRate","samplerate","BitrateIndex","optimum_bandwidth","lh","freq_map","table_index","nearestBitrateFullIndex","calcNeeded","mf_needed","lame_encode_frame","enc","InOut","n_in","n_out","NumUsed","num_used","blackman","fcn","wcn","bkwn","sin","fill_buffer_resample","outbuf","outbufPos","desired_len","in_bufferPos","bpc","gcd","intratio","filter_l","BLACKSIZE","time0","joff","xvalue","n_shift","fill_buffer","in_buffer","nsamples","io","numUsed","_p","_qu","_id3","_mpglib","lame_init","lame_init_old","full_bitrate_table","lower_range","lower_range_kbps","upper_range","upper_range_kbps","lame_init_params","map2MP3Frequency","linear_int","input_samplefreq","suggested_samplefreq","optimum_samplefreq","hip_decode_exit","hip_decode_init","lowpass_band","highpass_band","minband","maxband","fc1","fc2","lame_init_params_ppflt","id3tag_write_v2","InitVbrTag","lame_init_bitstream","apply_preset","LAME_DEFAULT_QUALITY","VBRNewIterationLoop","VBROldIterationLoop","vbrmode","ABRIterationLoop","lame_init_qval","NSATTACKTHRE","NSATTACKTHRE_S","lame_encode_flush","mp3buffer","mp3bufferPos","mp3buffer_size","mp3buffer_size_remaining","end_padding","frames_left","imp3","samples_to_encode","bunch","frame_num","lame_encode_buffer","id3tag_write_v1","buffer_l","buffer_r","update_inbuffer_size","mp3out","mp3size","in_buffer_ptr","inOut","buf_size","lame_encode_buffer_sample","VbrMode$20","Presets_1","VBRPresets","qual","compS","shThreshold","shThresholdS","adj","adjShort","lower","curve","sens","inter","joint","mod","fix","vbr_q","quant_comp_s","expY","st_lrm","st_s","masking_adj","masking_adj_short","ath_lower","ath_curve","ath_sensitivity","interch","safejoint","sfb21mod","ABRPresets","kbps","sc","mask","interCh","sfScale","nsmsfix","nsbass","sfscale","lame","_lame","vbr_old_switch_map","vbr_psy_switch_map","apply_vbr_preset","enforce","vbr_preset","lame_set_VBR_q","abr_switch_map","apply_abr_preset","actual_bitrate","VBRQuantize_1","CalcNoiseResult_1","new_float$22","new_int$22","CalcNoiseData_1","System$21","VbrMode$21","Util$21","Arrays$21","new_float$21","assert$21","Quantize_1","tk","BinSearchDirection","loop_break","quant_compare","best","calc","better","klemm_noise","get_klemm_noise","balance_noise","bRefine","ifqstep34","trigger","amp_scalefac_bands","inc_scalefac_scale","amp","inc_subblock_gain","init_xrpow_core","ixwork","stop","ath21","ath12","psfb21_analogsilence","BINSEARCH_NONE","BINSEARCH_UP","BINSEARCH_DOWN","trancate_smallspectrums","allowedNoise","trancateThreshold","nsame","cod_info_w","save_xrpow","best_noise_info","best_part2_3_length","bEndOfSearch","best_ggain_pass1","desired_rate","nBits","flagGoneOver","Direction","bin_search_StepSize","age","search_limit","noise_info","maxggain","huff_bits","ResvAdjust","VBR_encode_granule","min_bits","dbits","bst_cod_info","bst_xrpow","Max_bits","real_bits","this_bits","LameInternalFlags","get_framebits","frameBits","MeanBits","VBR_old_prepare","bands","analog_silence","mxb","bitpressure_strategy","VBR_new_prepare","maximum_framebits","calc_target_bits","analog_silence_bits","max_frame_bits","res_factor","totbits","assert$23","Reservoir_1","maxmp3buf","frameLength","resvLimit","fullFrameBits","resvsize","over_bits","stuffingBits","mdb_bytes","Version_1","getLameVersion","LAME_MAJOR_VERSION","getLameVeryShortVersion","getPsyVersion","PSY_MAJOR_VERSION","getLameUrl","getLameOsBitness","System$22","VbrMode$22","ShortBlock$22","Arrays$22","new_byte$22","assert$24","VBRTag","_v","NUMTOCENTRIES","MAXFRAMESIZE","LAMEHEADERSIZE","crc16Lookup","extractInteger","createInteger","createShort","shiftInBitsValue","setLameTagFrameHeader","bbyte","abyte","crcUpdateLookup","Tables","addVbr","getVbrTag","pTagData","VBRTagData","hId","hSrIndex","hMode","hBitrate","samprate","isVbrTag","head_flags","frames","bytes","toc","vbrScale","headersize","encDelay","encPadding","kbps_header","totalFrameSize","headerSize","getLameTagFrame","LAME_ID","indx","seek_point","xingSeekTable","streamIndex","FRAMES_FLAG","streamSize","musicLength","streamBuffer","streamBufferPos","revMethod","misc","musicCRC","abrBitrate","bytesWritten","vbrTypeTranslator","peakSignalAmplitude","radioReplayGain","noiseShaping","stereoMode","nonOptimal","sourceFreq","expNPsyTune","safeJoint","noGapMore","noGapPrevious","noGapCount","noGapCurr","athType","putLameVBR","putVbrTag","stream","seek","id3v2TagSize","fpStream","id3v2Header","readFully","skipId3v2","write","VBRTag_1","GetAudio","parse2","mpg2","Parse","ver2","id32","pre2","MPGLib","ID3Tag","_bits","WavHeader","dataOffset","dataLen","channels","sampleRate","fourccToInt","fourcc","Presets","QuantizePVT","Quantize","Takehiro","Reservoir","RIFF","WAVE","fmt_","readHeader","dataView","getUint32","fmtLen","getUint16","Mp3Encoder_1","gaud","retcode","maxSamples","encodeBuffer","_sz","subarray","flush","classCallCheck","Encoder","bitRate","mp3Encoder","samplesMono","clearBuffer","dataBuffer","arrayBuffer","floatTo16BitPCM","convertBuffer","appendToBuffer","MicRecorder","startRecordingAt","deviceId","activeStream","microphone","processor","startTime","timerToStart","createMediaStreamSource","createScriptProcessor","onaudioprocess","lameEncoder","inputBuffer","getChannelData","connect","destination","disconnect","close","getAudioTracks","track","AudioContext","webkitAudioContext","audio","exact","mediaDevices","getUserMedia","addMicrophoneListener","catch","finalBuffer","finish","Blob","timeoutDuration","longerTimeoutBrowsers","called","scheduled","functionToCheck","getStyleComputedProperty","css","getParentNode","overflowX","overflowY","getReferenceNode","reference","isIE11","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","getRoot","findCommonOffsetParent","element1","element2","isOffsetContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","modifier","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","getComputedStyle","getClientRect","offsets","getBoundingClientRect","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","boundaries","boundariesElement","boundariesNode","popper","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","check","runModifiers","ends","cur","positionFixed","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","destroy","getWindow","setupEventListeners","passive","scrollElement","attachToScrollParents","scrollParents","isBody","enableEventListeners","disableEventListeners","removeEventListeners","isNumeric","setStyles","isFirefox","isModifierRequired","requesting","requested","validPlacements","placements","clockwise","counter","BEHAVIORS","parseOffset","useHeight","basePlacement","fragments","frag","splitRegex","ops","mergeWithPrevious","op","toValue","index2","shiftvariation","isVertical","shiftOffsets","transformProp","popperStyles","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","getOppositeVariation","subtractLength","bound","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","bothOddWidth","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","Popper","requestAnimationFrame","debounce","modifierOptions","eventsEnabled","Utils","PopperUtils","Defaults","FUNC_ERROR_TEXT","PLACEHOLDER","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","isRegExp","nodeIsSet","nodeIsTypedArray","isTypedArray","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","uid","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","nativeCreate","metaMap","realNames","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","MAX_ARRAY_LENGTH","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","baseWhile","isDrop","baseWrapperValue","actions","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","createCaseFirst","methodName","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","setData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","otherFunc","isKeyable","getValue","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","interceptor","wrapperAt","forEachRight","invokeMap","keyBy","before","bindKey","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","defer","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lt","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","invert","invertBy","invoke","omit","CLONE_DEEP_FLAG","basePick","toPairs","toPairsIn","camelCase","word","upperFirst","kebabCase","lowerFirst","snakeCase","startCase","upperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","multiply","multiplier","multiplicand","minuend","subtrahend","castArray","chunk","compact","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functions","functionsIn","initial","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","spread","takeRight","takeRightWhile","tap","throttle","toPath","isArrLike","unary","uniqBy","uniqWith","unset","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","mean","meanBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","unescape","uniqueId","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","view","getView","iterLength","takeCount","iterIndex","commit","define","_isNativeReflectConstruct","construct","sham","Proxy","_createSuper","Derived","Super","NewTarget","possibleConstructorReturn","_setPrototypeOf","_inherits","formatMuiErrorMessage","defaultVariantMapping","Typography","_props$align","align","_props$display","_props$gutterBottom","gutterBottom","_props$noWrap","noWrap","_props$paragraph","paragraph","_props$variant","variant","_props$variantMapping","variantMapping","margin","srOnly","alignLeft","textAlign","alignCenter","alignRight","alignJustify","textOverflow","whiteSpace","marginBottom","colorInherit","colorTextPrimary","colorTextSecondary","displayInline","displayBlock","Transition","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","prevState","updateStatus","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","appearing","nodeRef","findDOMNode","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","onExited","nextState","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","TransitionGroupContext","Provider","cloneElement","Children","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","isReactComponent","forceUpdate","isPureReactComponent","__self","__source","$$typeof","_owner","keyPrefix","V","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Fragment","Profiler","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Consumer","_context","createFactory","createRef","isValidElement","lazy","_ctor","_status","_result","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","onError","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","ua","registrationName","va","wa","dependencies","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","removeAttribute","setAttribute","setAttributeNS","Ya","Za","$a","ab","bb","cb","db","fb","gb","hb","ib","jb","kb","lb","nb","pb","qb","_debugOwner","_debugSource","fileName","lineNumber","return","rb","_valueTracker","stopTracking","tb","yb","checked","zb","defaultChecked","_wrapperState","initialChecked","Ab","initialValue","Bb","Cb","Db","Eb","Gb","Fb","Hb","defaultSelected","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","Rb","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","animation","Xb","Yb","Zb","$b","ac","bc","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","correspondingUseElement","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","eventSystemFlags","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","container","Lc","delete","pointerId","Mc","Nc","Pc","unstable_runWithPriority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","gridArea","lineClamp","kd","ld","setProperty","nd","menuitem","area","br","col","embed","hr","img","keygen","link","meta","param","wbr","od","pd","qd","rd","sd","td","ud","vd","xd","HTMLIFrameElement","contentWindow","location","yd","contentEditable","Dd","Ed","Fd","Gd","__html","Hd","Id","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","isDefaultPrevented","defaultPrevented","ee","eventPool","fe","destructor","de","getPooled","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","ge","he","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","qe","detail","se","ve","which","te","char","ue","we","xe","ye","change","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","attachEvent","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","pageX","pageY","buttons","relatedTarget","fromElement","toElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","kf","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","charCode","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","MozPrintableKey","qf","8","9","12","13","16","17","18","19","20","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","rf","sf","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","observedBits","responders","tg","ug","updateQueue","baseState","baseQueue","shared","pending","effects","vg","wg","suspenseConfig","payload","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","Lg","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","memoizedProps","revealOrder","ih","responder","jh","kh","mh","nh","oh","ph","qh","rh","sh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","ci","di","ei","UNSAFE_componentWillUpdate","componentWillUpdate","hi","pendingContext","qi","retryTime","ji","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","onclick","createElementNS","createTextNode","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","Di","Mi","Ni","Oi","Pi","Qi","insertBefore","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","removeAllRanges","addRange","setEnd","vb","Uj","Vj","Wj","hidden","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hasAttribute","hk","jk","unmount","querySelectorAll","form","Lj","lk","Events","findFiberByHostInstance","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","performance","cancelAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","isGeneratorFunction","genFun","awrap","async","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","all","promises","InterceptorManager","dispatchRequest","interceptors","fulfilled","rejected","getUri","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","fns","normalizedName","isAxiosError","description","columnNumber","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","parsed","line","originURL","msie","userAgent","urlParsingNode","resolveURL","host","hostname","port","pathname","requestURL","expires","domain","secure","cookie","toGMTString","decodeURIComponent","executor","resolvePromise","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ReactPropTypesSecret","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","any","instanceOf","objectOf","checkPropTypes","PropTypes","moveBlockInContentState","insertAtomicBlock","afterSplit","insertionTarget","asAtomicBlock","charData","atomicBlockConfig","atomicDividerBlockConfig","fragmentArray","withAtomicBlock","moveAtomicBlock","atomicBlock","insertionMode","withMovedAtomicBlock","targetBlock","selectionAfterRemoval","_targetBlock","selectionAfterSplit","_targetBlock2","modifyInlineStyle","addOrRemove","sliceStart","sliceEnd","applyEntityToContentBlock","startArg","DraftEntitySegments","getRangesForDraftEntity","getEntityRemovalRange","isEntireSelectionWithinEntity","isEntityAtStart","sideToConsider","entityRanges","entityRange","newSelectionState","startSelectionState","endSelectionState","_startSelectionState","_endSelectionState","entityStart","segments","segment","segmentEnd","segmentStart","removalStart","removalEnd","entityEnd","atStart","atEnd","ranges","insertIntoList","updateExistingBlock","fragmentBlock","targetKey","targetOffset","finalKey","finalOffset","newBlock","insertFragment","isTreeBasedBlockMap","newBlockArr","fragmentSize","shouldNotUpdateFromFragmentBlock","headText","headCharacters","appendToHead","updateHead","blockSize","tailText","tailCharacters","prependToTail","updateTail","updatedBlockMap","originalBlockMap","fragmentHeadBlock","headKey","targetNextKey","targetParentKey","fragmentRootBlocks","rootBlock","rootBlocks","lastSiblingKey","getRootBlocks","lastRootFragmentBlockKey","originalTargetParentChildKeys","insertionIndex","newChildrenKeysArray","updateBlockMapLinks","fragmentBlockMap","blockText","newOffset","getNextDelimiterBlockKey","transformBlock","getAncestorsKeys","parents","getNextValidSibling","nextValidSiblingKey","getPrevValidSibling","prevValidSiblingKey","nextDelimiters","nextDelimiter","_block","getNextDelimitersBlockKeys","delimiterKey","prevSiblingKey","newParentKey","newParent","removeFromList","isExperimentalTreeBlock","parentAncestors","endBlockchildrenKeys","endBlockAncestors","modifiedStart","blockToSplit","keyBelow","blockAbove","blockBelow","blocksBefore","blocksAfter","originalBlock","belowBlock","originalBlockKey","belowBlockKey","newChildrenArray","LeafRange","DecoratorRange","leafSets","decorations","areEqual","generateLeaves","inlineStyles","bidiService","UnicodeBidiService","prevBidiMap","nextBidi","bidiMap","defaultDir","_defaultDir","_lastDir","originalBlockToBeMoved","originalTargetBlock","isInsertedAfterTarget","originalTargetKey","originalParentKey","originalNextSiblingKey","originalPrevSiblingKey","newNextSiblingKey","newPrevSiblingKey","newParentChildrenList","targetBlockIndex","blockToBeMoved","blocksToBeMoved","blockMapWithoutBlocksToBeMoved","nextDelimiterBlockKey","isBlockToBeMoved","hasNextSiblingAndIsNotNextSibling","doesNotHaveNextSiblingAndIsNotDelimiter","slicedBlocks","_decorators","canOccupySlice","targetArr","componentKey","occupySlice","DraftEditorCompositionHandler","DraftEditorContents","DraftEditorDragHandler","DraftEditorEditHandler","flushControlled","DraftEditorPlaceholder","DraftEffects","allowSpellCheck","handlerMap","edit","composite","drag","cut","didInitODS","UpdateDraftEditorFlags","_update","_React$Component2","alreadyHasFocus","blur","onPaste","onCut","onCopy","editHandler","_handler","setMode","contentsKey","clipboard","_clipboard","_dragCount","exitCurrentMode","_editorKey","editorKey","_placeholderAccessibilityID","_latestCommittedEditorState","_onBeforeInput","_buildHandler","_onBlur","_onCharacterData","_onCompositionEnd","_onCompositionStart","_onCopy","_onCut","_onDragEnd","_onDragOver","_onDragStart","_onDrop","_onInput","_onFocus","_onKeyDown","_onKeyPress","_onKeyUp","_onMouseDown","_onMouseUp","_onPaste","_onSelect","getEditorKey","_proto2","eventName","_showPlaceholder","_renderPlaceholder","placeHolderProps","textAlignment","accessibilityID","blockRendererFn","blockStyleFn","textDirectionality","rootClass","ariaRole","ariaExpanded","editorContentsProps","_handleEditorContainerRef","ariaActiveDescendantID","ariaAutoComplete","ariaControls","ariaDescribedBy","ariaLabel","ariaLabelledBy","ariaMultiline","ariaOwneeID","autoCapitalize","autoComplete","autoCorrect","notranslate","webDriverTestID","onBeforeInput","onBlur","onCompositionEnd","onCompositionStart","onDragEnd","onDragEnter","onDragLeave","onDragOver","onDragStart","onDrop","onFocus","onInput","onKeyDown","onKeyPress","onKeyUp","onMouseUp","editorRef","spellCheck","outline","WebkitUserSelect","suppressContentEditableWarning","tabIndex","execCommand","keyBindingFn","stripPastedStyles","DOMObserver","editOnSelect","getEntityKeyForSelection","resolved","stillComposing","domObserver","startDOMObserver","resolveComposition","mutations","stopAndFlushMutations","composedChars","_DraftOffsetKey$decod","_editorState$getBlock","replacementRange","compositionEndSelectionState","restoreEditorDOM","editorStateWithUpdatedSelection","getWindowForNode","DOM_OBSERVER_OPTIONS","subtree","characterData","childList","characterDataOldValue","USE_CHAR_DATA","containerWindow","MutationObserver","observer","registerMutations","onCharData","registerMutation","observe","takeRecords","removeEventListener","getMutationTextContent","mutation","removedNodes","UAParser","UNKNOWN","PLATFORM_MAP","getResult","browserVersionData","major","minor","getBrowserVersion","uaData","cpu","architecture","browserMinorVersion","browserVersion","device","engine","os","platformVersion","MODEL","NAME","TYPE","VENDOR","MOBILE","TABLET","SMARTTV","util","extensions","mergedRegexes","str1","str2","lowerize","rgx","maps","oldsafari","amazon","sprint","vendor","windows","uastring","rgxmap","getBrowser","getCPU","getDevice","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","DEVICE","CONSOLE","WEARABLE","EMBEDDED","ENGINE","OS","$","jQuery","Zepto","parser","componentRegex","orRegex","rangeRegex","modifierRegex","numericRegex","checkOrExpression","expressions","checkSimpleExpression","startVersion","endVersion","isSimpleVersion","checkRangeExpression","versionComponents","_getModifierAndCompon","getModifierAndComponents","rangeComponents","checkLessThan","compareComponents","checkLessThanOrEqual","checkGreaterThanOrEqual","lowerBound","upperBound","numeric","checkApproximateVersion","checkEqual","zeroPad","compareNumeric","aPrefix","bPrefix","aNumeric","bNumeric","_normalizeVersions","normalizeVersions","aNormalized","bNormalized","DraftEditorBlockNode","DraftEditorContentsExperimental","prevEditorState","nextEditorState","nextNativeContent","wasComposing","nowComposing","prevContent","nextContent","prevDecorator","nextDecorator","processedBlocks","nodeBlock","blockProps","wrapperTemplate","nextBlockKey","outputBlocks","wrapperElement","DraftEditorNode","getDraftRenderConfig","configForType","getCustomRenderConfig","customRenderer","CustomComponent","customProps","customEditable","getElementPropsConfig","customConfig","elementProps","customClass","isContainerNode","blockHasChanged","wrapperRef","htmlBlockNode","_getDraftRenderConfig","shouldNotAddWrapperElement","wrappedSiblings","_iteratorNormalCompletion","_didIteratorError","_iteratorError","childrenIs","applyWrapperElementToSiblings","DraftEditorDecoratedLeaves","Leaves","useNewlineChar","_forceFlag","shouldBeNewline","elementNode","isNewline","NEWLINE_A","NEWLINE_B","getActiveElement","getAnonymizedDOM","getNodeLabels","anonymized","anonymizeTextWithin","labels","cloneNode","outerHTML","getAnonymizedEditorDOM","currentNode","getNodeLength","addFocusToSelection","nodeWasFocus","activeElementName","nodeIsFocus","selectionRangeCount","selectionAnchorNodeName","selectionAnchorOffset","selectionFocusNodeName","selectionFocusOffset","getRangeAt","addPointToSelection","nodeStart","nodeEnd","documentObject","tempKey","tempOffset","hasAnchor","storedFocusNode","storedFocusOffset","isNode","camelize","hyphenate","asString","getPropertyValue","cssFloat","styleFloat","_hyphenPattern","_uppercasePattern","elem","docElem","clientLeft","clientTop","isWebkit","compatMode","pageXOffset","pageYOffset","joinClasses","getListItemClasses","shouldResetCount","blocksAsArray","lastWrapperTemplate","componentProps","_className","_ii","newClassName","argLength","nextClass","getTextContentFromFiles","isEventHandled","endDrag","dropSelection","eventTargetDocument","caretRangeFromPoint","dropRange","rangeParent","rangeOffset","getSelectionForEvent","handleDroppedFiles","fileText","insertTextAtSelection","dragType","_internalDrag","handleDrop","newContentState","mouseUpEvent","MouseEvent","dispatchEvent","mimeString","getParts","isJpeg","hasArrayNature","isChrome","selectionHandler","isSelectionAtLeafStart","setImmediate","_pendingStateFromBeforeInput","handleBeforeInput","mustPreventNative","oldBlockTree","newBlockTree","oldLeafSet","newLeafSet","oldStart","adjustedStart","oldEnd","adjustedEnd","newStart","newDecoratorKey","blockTree","isAtStart","leafStart","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","channel","installMessageChannelImplementation","script","installReadyStateChangeImplementation","task","clearImmediate","preserveSelectionOnBlur","_selection","currentSelection","getFragmentFromSelection","setClipboard","removeFragment","keyCommandPlainBackspace","isGecko","domSelection","isNotTextOrElementNode","span","domText","modelText","preserveEntity","charDelta","contentWithAdjustedDOMSelection","inputType","onInputType","SecondaryClipboard","keyCommandBackspaceToStartOfLine","keyCommandBackspaceWord","keyCommandDeleteWord","keyCommandInsertNewline","keyCommandMoveSelectionToEndOfBlock","keyCommandMoveSelectionToStartOfBlock","keyCommandPlainDelete","keyCommandTransposeCharacters","keyCommandUndo","callDeprecatedHandler","handlerName","deprecatedHandler","handleReturn","newState","paste","onKeyCommand","blockEnd","keyAfter","expandRangeToStartOfLine","areRectsOnOneLine","minTop","minBottom","maxTop","maxBottom","DOCUMENT_TYPE_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","collapsed","containingElement","correctDocument","documentBody","getLineHeightPx","bestContainer","bestOffset","setStartBefore","currentContainer","maxIndexToConsider","toRemove","moveSelectionForward","charAhead","finalSelection","afterInsert","updateFn","undoneState","DraftPasteProcessor","splitTextIntoTextBlocks","defaultFileText","handlePastedFiles","processText","withInsertedText","textBlocks","handlePastedText","internalClipboard","getClipboard","areTextBlocksAndClipboardEqual","htmlFragment","processHTML","htmlMap","textFragment","textMap","convertFromHTMLToContentBlocks","textLine","blockNodeConfig","prevSiblingIndex","_uri","adjustment","NEWLINE_REGEX","unstable_flushControlled","encodeEntityRanges","encodeInlineStyleRanges","createRawBlock","entityStorageMap","inlineStyleRanges","insertRawBlock","rawBlocks","blockCacheRef","rawBlock","rawDraftContentState","rawState","entityCacheRef","entityStorageKey","stringifiedEntityKey","encodeRawBlocks","rawEntityMap","encodeRawEntityMap","storageMap","encoded","isTruthy","EMPTY_ARRAY","styleList","styleToEncode","filteredInlines","getEncodedInlinesForType","DraftTreeAdapter","createCharacterList","decodeEntityRanges","decodeInlineStyleRanges","decodeBlockNodeConfig","decodeCharacterList","rawEntityRanges","rawInlineStyleRanges","addKeyIfMissing","updateNodeStack","parentRef","nodesWithParentRef","decodeRawBlocks","isTreeRawBlock","fromRawStateToRawTreeState","contentBlockNode","siblings","_index","isValidBlock","_children","_contentBlockNode","decodeContentBlockNodes","decodeContentBlocks","fromRawTreeStateToRawState","rawEntityKey","_rawEntityMap$rawEnti","decodeRawEntityMap","isListBlock","draftTreeState","transformedBlocks","traverseInDepthOrder","addDepthToChildren","draftState","parentStack","treeBlock","lastParent","DraftTreeInvariants","isConnectedTree","eligibleFirstNodes","nodesSeen","currentKey","visitedStack","childKeys","_firstNode","isValidTree","characterArray","getRangeBoundingClientRect","boundingRect","_rects$","_rects$2","_interopRequireWildcard","_assertThisInitialized2","_frequently","_anchors","_category","_preview","_search","I18N","notfound","skintext","categorieslabel","skintones","1","2","3","4","5","6","NimblePicker","CUSTOM","RECENT_CATEGORY","SEARCH_CATEGORY","firstRender","allCategories","customCategories","customCategoriesCreated","category","customEmoji","hideRecent","categoryIndex","isIncluded","isExcluded","newEmojis","emojiIndex","newCategory","includeRecent","excludeRecent","setAnchorsRef","handleAnchorClick","setSearchRef","handleSearch","setScrollRef","handleScroll","handleScrollPaint","handleEmojiOver","handleEmojiLeave","handleEmojiClick","handleEmojiSelect","setPreviewRef","handleSkinChange","handleDarkMatchMediaChange","testStickyPosition","firstRenderTimeout","updateCategoriesSize","leaveTimeout","darkMatchMedia","stickyTestElement","hasStickyPosition","matchMedia","media","preview","categoryRefs","maxMargin","scroll","memoizeSize","updateDisplay","waitingForPaint","activeCategory","scrollingDown","anchors","categoryName","scrollToComponent","handled","_native","getPreferredTheme","onAnchorClick","onSearch","onScroll","getCategories","setCategoryRef","emojiProps","skinsProps","_getRequireWildcardCache","newObj","hasPropertyDescriptor","fromCodePoint","highSurrogate","lowSurrogate","MAX_SIZE","codeUnits","codePoint","Anchors","defaultCategory","handleClick","isSelected","iconId","backgroundColor","_notFound","Category","setContainerRef","setLabelRef","minMargin","nextPerLine","nextNative","nextHasStickyPosition","nextEmojis","nextEmojiProps","nextSkin","nextSize","nextSet","shouldUpdate","parentElement","_this$container$getBo","parentTop","labelHeight","frequentlyUsed","getEmojis","_this$props3","labelStyles","labelSpanStyles","containerStyles","NotFound","_skinsEmoji","_skinsDot","Preview","idleEmoji","_emojiData$emoticons","knownEmoticons","listedEmoticons","emoticon","SkinsEmoji","_Skins","skinToneNodes","SkinsDot","visible","_svgs","_nimbleEmojiIndex","Search","isSearching","handleKeyUp","handleChange","maxResults","_this$state","inputId","htmlFor","NimbleEmojiIndex","originalPool","customEmojisList","buildIndex","_loop","emojiId","clearCustomEmojis","_ref$custom","addCustomToPool","allResults","customIsIncluded","customIsExcluded","aPool","aIndex","charIndex","_char","scores","sub","subIndex","aScore","bScore","localeCompare","plainText","_findWithRegex","_constants","existingEntityKey","emojiText","emojiUnicode","Mode","INSERT","REPLACE","emojiAddedContent","contentStateWithEntity","currentSelectionState","emojiEndPos","afterRemovalContentState","_iterableToArrayLimit","skinTones","_react2","_propTypes2","_proxies2","_moveSelectionToEnd2","_resolveDecorators2","_defaultKeyBindings2","_defaultKeyCommands2","getDecoratorLength","PluginEditor","_Component","_initialiseProps","resolvePlugins","plugin","getPluginMethods","_this$editor","currDec","nextDec","pluginHooks","createPluginHooks","resolveCustomStyleMap","accessibilityProps","resolveAccessibilityProps","resolveblockRenderMap","plugins","defaultKeyBindings","defaultKeyCommands","defaultBlockRenderMap","getPlugins","getProps","getReadOnly","setReadOnly","getEditorRef","createEventHooks","newArgs","createHandleHooks","createFnHooks","_len3","_key3","pluginProps","pluginRest","wasHandled","eventHookKeys","handleHookKeys","fnHookKeys","attrName","plug","getAccessibilityProps","popupProps","ariaHasPopup","_createCompositeDecorator2","_MultiDecorator2","decoratorIsCustom","getDecoratorsFromProps","compositeDecorator","customDecorators","convertedDecorators","_immutable2","MultiDecorator","getDecoratorForKey","getInnerKey","MS_PER_400_YEARS","pluralForm","pluralize","plurals","months$1","pluralForm$1","pluralize$1","plurals$1","weekdaysParseExact","symbolMap","7","0","months$2","symbolMap$1","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","pluralForm$2","pluralize$2","plurals$2","symbolMap$2","numberMap$1","months$3","suffixes","70","80","10","30","60","90","relativeTimeWithPlural","num","forms","standalone","lastDigit","last2Digits","symbolMap$3","numberMap$2","১","২","৩","৪","৫","৬","৭","৮","৯","০","symbolMap$4","numberMap$3","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","relativeTimeWithMutation","mutationTable","monthsParseExact","monthsRegex$1","minWeekdaysParse","translate","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","ll","lll","llll","months$4","monthsParse$1","monthsRegex$2","plural$1","translate$1","processRelativeTime","processRelativeTime$1","processRelativeTime$2","months$5","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$3","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$4","monthsShortDot$2","monthsShort$3","monthsParse$4","monthsRegex$5","processRelativeTime$3","symbolMap$5","numberMap$4","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","numbersPast","numbersFuture","translate$2","monthsRegex$6","monthsParse$5","monthsShortWithDots","monthsShortWithoutDots","processRelativeTime$4","processRelativeTime$5","symbolMap$6","numberMap$5","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","symbolMap$7","numberMap$6","१","२","३","४","५","६","७","८","९","०","translate$3","weekEndings","translate$4","plural$2","translate$5","eraYearOrdinalRegex","$0","$1","$2","suffixes$1","symbolMap$8","numberMap$7","១","២","៣","៤","៥","៦","៧","៨","៩","០","symbolMap$9","numberMap$8","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","isUpper","symbolMap$a","numberMap$9","months$8","suffixes$2","processRelativeTime$6","eifelerRegelAppliesToNumber","translateSingular","special","translate$6","units$1","format$1","relativeTimeWithPlural$1","relativeTimeWithSingular","translator","correctGrammaticalCase","wordKey","translate$7","symbolMap$b","numberMap$a","relativeTimeMr","symbolMap$c","numberMap$b","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","symbolMap$d","numberMap$c","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$6","monthsRegex$7","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$7","monthsRegex$8","symbolMap$e","numberMap$d","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","monthsNominative","monthsSubjective","plural$3","translate$8","relativeTimeWithPlural$2","relativeTimeWithPlural$3","monthsParse$8","months$9","days$1","months$a","monthsShort$6","plural$5","translate$9","processRelativeTime$7","translator$1","translator$2","symbolMap$f","numberMap$e","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","suffixes$3","suffixes$4","numbersNouns","translate$a","numberNoun","hundred","ten","one","suffixes$5","processRelativeTime$8","relativeTimeWithPlural$4","processHoursFunction","nominative","accusative","genitive","months$b","days$2","createStyles","plainObjectConstrurctor","cloneStyle","createRule","decl","jss","declCopy","rule","onCreateRule","by","toCssValue","ignoreImportant","cssValue","indentStr","indent","toCss","selector","_options$indent","fallbacks","_prop","_prop2","_value2","allowEmpty","escapeRegex","nativeEscape","CSS","BaseStyleRule","isProcessed","renderer","renderable","Renderer","force","onChangeValue","isDefined","removeProperty","attached","StyleRule","_BaseStyleRule","selectorText","scoped","generateId","applyTo","opts","setSelector","replaceRule","pluginStyleRule","defaultToStringOptions","atRegExp","ConditionalRule","rules","atMatch","RuleList","getRule","addRule","onProcessRule","keyRegExp","pluginConditionalRule","defaultToStringOptions$1","nameRegExp","KeyframesRule","nameMatch","keyRegExp$1","refRegExp","findReferencedKeyframe","keyframes","replaceRef","refKeyframe","onProcessStyle","KeyframeRule","pluginKeyframeRule","FontFaceRule","keyRegExp$2","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","defaultUpdateOptions","forceUpdateOptions","ruleOptions","_this$options","register","unregister","updateOne","_this$options2","styleRule","onUpdate","_nextValue","_prevValue","StyleSheet","deployed","attach","deploy","detach","addRules","added","deleteRule","_this$rules","PluginsRegistry","internal","external","registry","onProcessSheet","processedValue","newPlugin","sheets","SheetsRegistry","_temp","globalThis","ns","moduleId","createGenerateId","ruleCounter","jssId","minify","cssRule","attributeStyleMap","getHead","querySelector","findPrevNode","insertionPoint","findHigherSheet","findHighestSheet","comment","findCommentNode","getNonce","_insertRule","cssRules","appendRule","DomRenderer","hasInsertedRules","createStyle","nonce","nextNode","insertionPointElement","insertStyle","insertRules","nativeParent","latestNativeParent","parentStyleSheet","ruleStr","nativeRule","getRules","instanceCounter","Jss","isInBrowser","setup","createStyleSheet","removeStyleSheet","hasCSSTOMSupport","multiKeyStore","key1","key2","subCache","hasSymbol","pseudoClasses","fnValuesNs","fnRuleNs","functionPlugin","fnValues","fnRule","GlobalContainerRule","GlobalPrefixedRule","separatorRegExp","addScope","scope","jssGlobal","handleNestedGlobalContainerRule","handlePrefixedGlobalRule","parentRegExp","jssNested","getReplaceRef","replaceParentRefs","nestedProp","parentProp","parentSelectors","nestedSelectors","getOptions","prevOptions","nestingLevel","isNested","isNestedConditional","uppercasePattern","msPattern","toHyphenLower","hyphenateStyleName","hName","convertCase","converted","hyphenatedProp","px","percent","addCamelCasedVersion","regExp","border","motion","perspective","grid","innerProp","_innerProp","defaultUnit","camelCasedOptions","js","isTouch","jsCssMap","Moz","Webkit","appearence","noPrefill","supportedProperty","colorAdjust","pascalize","textOrientation","writingMode","breakPropsOld","inlineLogicalOld","newProp","unprefixed","prefixed","pascalized","scrollSnap","overscrollBehavior","propMap","flex2012","propMap$1","propKeys","prefixCss","propertyDetectors","key$1","el$1","cache$1","transitionProperties","transPropsRegExp","prefixTransitionCallback","prefixedValue","supportedValue","cacheKey","jssVendorPrefixer","prefixStyle","changeProp","supportedProp","changeValue","supportedValue$1","atRule","jssPropsSort","prop0","prop1","jssPreset","vendorPrefixer","propsSort","defaultOptions","disableGeneration","generateClassName","_options$disableGloba","disableGlobal","_options$productionPr","productionPrefix","_options$seed","seed","seedPrefix","getNextCounterId","styleSheet","createGenerateClassName","sheetsCache","sheetsManager","sheetsRegistry","StylesContext","indexCounter","increment","getStylesCreator","themingEnabled","stylesWithOverrides","noopTheme","getClasses","cacheClasses","lastProp","lastJSS","mergeClasses","baseClasses","newClasses","stylesCreator","sheetManager","staticSheet","dynamicStyles","serverGenerateClassName","getDynamicStyles","extracted","dynamicSheet","_ref4","useSynchronousEffect","classNamePrefixOption","_options$defaultTheme","stylesOptions2","ThemeContext","nextClasses","Icon","Collapse","_props$collapsedHeigh","collapsedHeight","collapsedHeightProp","_props$disableStrictM","disableStrictModeCompat","inProp","_props$timeout","_props$TransitionComp","TransitionComponent","timer","autoTransitionDuration","enableStrictModeCompat","unstable_strictMode","handleRef","normalizedTransitionCallback","nodeOrAppearing","isAppearing","handleEnter","handleEntering","wrapperHeight","duration2","handleEntered","handleExit","handleExited","handleExiting","nodeOrNext","maybeNext","entered","wrapperInner","muiSupportAuto","visibility","_props$disablePortal","disablePortal","onRendered","mountNode","setMountNode","getContainer","getScale","entering","Grow","autoTimeout","foreignRef","_getTransitionProps","_getTransitionProps2","Link","TypographyClasses","_props$underline","underline","_useIsFocusVisible","focusVisibleRef","focusVisible","setFocusVisible","handlerRef","underlineNone","underlineHover","underlineAlways","WebkitTapHighlightColor","verticalAlign","borderStyle","makeStylesWithoutDefault","createStylesOriginal","InputAdornment","_props$disablePointer","disablePointerEvents","_props$disableTypogra","disableTypography","variantProp","muiFormControl","hiddenLabel","filled","positionStart","positionEnd","marginDense","maxHeight","alignItems","marginRight","pointerEvents","Skeleton","_props$animation","hasChildren","withChildren","fitContent","heightAuto","transformOrigin","circle","pulse","wave","maxWidth","formControlState","states","later","getStyleValue","TextareaAutosize","rows","rowsMax","_props$rowsMin","rowsMin","rowsMinProp","inputRef","shadowRef","renders","syncHeight","inputShallow","boxSizing","singleRowHeight","outerHeight","outerHeightStyle","handleResize","hasValue","isFilled","SSR","InputBase","ariaDescribedby","endAdornment","_props$fullWidth","fullWidth","_props$inputComponent","inputComponent","_props$inputProps","inputProps","inputPropsProp","inputRefProp","_props$multiline","multiline","renderSuffix","startAdornment","_props$type","valueProp","handleInputRefWarning","handleInputPropsRefProp","handleInputRefProp","handleInputRef","focused","setFocused","fcs","onFilled","onEmpty","checkDirty","InputComponent","setAdornedStart","formControl","adornedStart","adornedEnd","onAnimationStart","required","inputMultiline","inputHiddenLabel","inputAdornedStart","inputAdornedEnd","inputTypeSearch","inputMarginDense","placeholderHidden","placeholderVisible","paddingTop","font","minWidth","animationDuration","boxShadow","resize","Input","disableUnderline","bottomLineColor","borderBottomColor","borderBottom","borderBottomStyle","FilledInput","borderTopLeftRadius","borderTopRightRadius","paddingBottom","WebkitBoxShadow","WebkitTextFillColor","caretColor","NotchedOutline","labelWidthProp","labelWidth","notched","legendLabelled","legendNotched","legend","borderWidth","OutlinedInput","_props$labelWidth","notchedOutline","borderColor","FormLabel","asterisk","InputLabel","_props$disableAnimati","disableAnimation","shrinkProp","shrink","animated","outlined","isMuiElement","muiNames","FormControl","_props$disabled","_props$error","visuallyFocused","_props$hiddenLabel","_props$margin","_props$required","initialAdornedStart","_React$useState2","initialFilled","setFilled","_React$useState3","_focused","childContext","registerEffect","flexDirection","marginNormal","FormHelperText","contained","ownerWindow","getScrollbarSize","scrollDiv","scrollbarSize","ariaHidden","show","getPaddingRight","ariaHiddenSiblings","nodesToExclude","blacklistTagNames","findIndexOf","handleContainer","fixedNodes","restoreStyle","restorePaddings","disableScrollLock","isOverflowing","scrollContainer","ModalManager","modals","containers","modalIndex","modalRef","hiddenSiblingNodes","hiddenSiblings","getHiddenSiblings","containerIndex","restore","nextTop","Unstable_TrapFocus","_props$disableAutoFoc","disableAutoFocus","_props$disableEnforce","disableEnforceFocus","_props$disableRestore","disableRestoreFocus","getDoc","isEnabled","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","rootRef","handleOwnRef","prevOpenRef","contain","loopFocus","interval","setInterval","clearInterval","invisible","SimpleBackdrop","_props$invisible","defaultManager","Modal","inProps","_props$BackdropCompon","BackdropComponent","BackdropProps","_props$closeAfterTran","closeAfterTransition","_props$disableBackdro","disableBackdropClick","_props$disableEscapeK","disableEscapeKeyDown","_props$disableScrollL","_props$hideBackdrop","hideBackdrop","_props$keepMounted","keepMounted","_props$manager","manager","onBackdropClick","onClose","onEscapeKeyDown","exited","setExited","mountNodeRef","hasTransition","getHasTransition","getModal","handleMounted","mount","handleOpen","resolvedContainer","isTopModal","handlePortalRef","handleClose","TrapFocus","Paper","_props$square","square","_props$elevation","elevation","rounded","elevations","shadow","getOffsetTop","vertical","getOffsetLeft","horizontal","getTransformOriginValue","getAnchorEl","anchorEl","Popover","_props$anchorOrigin","anchorOrigin","anchorPosition","_props$anchorReferenc","anchorReference","containerProp","getContentAnchorEl","_props$marginThreshol","marginThreshold","_props$PaperProps","PaperProps","_props$transformOrigi","_props$transitionDura","transitionDurationProp","_props$TransitionProp","TransitionProps","paperRef","contentAnchorOffset","resolvedAnchorEl","anchorRect","anchorVertical","getContentAnchorOffset","contentAnchorEl","getTransformOrigin","elemRect","getPositioningStyle","elemTransformOrigin","heightThreshold","widthThreshold","_diff","_diff2","_diff3","setPositioningStyles","positioning","handlePaperRef","updatePosition","ListContext","_props$dense","dense","_props$disablePadding","disablePadding","subheader","listStyle","nextItem","disableListWrap","nextElementSibling","previousItem","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","innerText","repeating","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","MenuList","_props$autoFocus","_props$autoFocusItem","autoFocusItem","_props$disabledItemsF","_props$disableListWra","listRef","textCriteriaRef","previousKeyMatched","lastTime","adjustStyleForScrollbar","containerElement","noExplicitWidth","activeItemIndex","newChildProps","lowerKey","currTime","keepFocusOnCurrent","RTL_ORIGIN","LTR_ORIGIN","disableAutoFocusItem","_props$MenuListProps","MenuListProps","PopoverClasses","menuListActionsRef","contentAnchorRef","WebkitOverflowScrolling","areEqualValues","SelectInput","autoWidth","displayEmpty","IconComponent","labelId","_props$MenuProps","MenuProps","onOpen","openProp","renderValue","_props$SelectDisplayP","SelectDisplayProps","tabIndexProp","_useControlled","_useControlled2","displayNode","setDisplayNode","isOpenControlled","menuMinWidthState","setMenuMinWidthState","openState","setOpenState","getElementById","displaySingle","childrenArray","handleItemClick","itemIndex","displayMultiple","computeDisplay","menuMinWidth","buttonId","selectMenu","onMouseDown","nativeInput","iconOpen","NativeSelectInput","iconFilled","iconOutlined","defaultInput","NativeSelect","_props$IconComponent","ArrowDropDownIcon","_props$input","nativeSelectStyles","Select","_props$autoWidth","_props$displayEmpty","_props$multiple","_props$native","variantProps","variantComponent","TextField","FormHelperTextProps","helperText","InputLabelProps","InputProps","_props$select","SelectProps","InputMore","_InputLabelProps$requ","displayRequired","helperTextId","inputLabelId","InputElement","styleFunction","newStyleFunction","fields","filterProps","compose","getPath","_options$cssProperty","cssProperty","themeKey","themeMapping","propValueFinal","getBorder","borders","flexbox","sizing","styled","componentCreator","StyledComponent","classNameProp","ComponentProp","FinalComponent","styledWithoutDefault","positions","Box","getChildMapping","mapFn","getProp","getNextChildMapping","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","childMapping","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","TransitionGroup","contextValue","mounted","currentChildMapping","childFactory","Ripple","_props$pulsate","pulsate","rippleX","rippleY","rippleSize","_props$onExited","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","timeoutId","TouchRipple","_props$center","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","startCommit","oldRipples","_options$pulsate","_options$center","_options$fakeElement","fakeElement","sizeX","sizeY","ButtonBase","buttonRefProp","buttonRef","_props$centerRipple","centerRipple","_props$disableRipple","disableRipple","_props$disableTouchRi","disableTouchRipple","_props$focusRipple","focusRipple","focusVisibleClassName","onFocusVisible","onTouchEnd","onTouchMove","onTouchStart","_props$tabIndex","TouchRippleProps","rippleRef","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleMouseDown","handleDragLeave","handleMouseUp","handleMouseLeave","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","handleFocus","isNonNativeButton","keydownRef","buttonProps","handleUserRef","mountedState","setMountedState","enableTouchRipple","justifyContent","IconButton","_props$edge","edge","_props$disableFocusRi","disableFocusRipple","_props$size","edgeStart","edgeEnd","sizeSmall","defaultPopperOptions","_props$placement","initialPlacement","_props$popperOptions","popperOptions","popperRefProp","popperRef","_props$transition","tooltipRef","ownRef","handlePopperRef","handlePopperRefRef","rtlPlacement","flipPlacement","setPlacement","handlePopperUpdate","PopperJs","preventOverflow","onCreate","hystersisOpen","hystersisTimer","Tooltip","_props$arrow","arrow","_props$disableFocusLi","disableFocusListener","_props$disableHoverLi","disableHoverListener","_props$disableTouchLi","disableTouchListener","_props$enterDelay","enterDelay","_props$enterNextDelay","enterNextDelay","_props$enterTouchDela","enterTouchDelay","idProp","_props$interactive","interactive","_props$leaveDelay","leaveDelay","_props$leaveTouchDela","leaveTouchDelay","_props$PopperComponen","PopperComponent","PopperProps","childNode","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","idOverride","defaultId","setDefaultId","useId","forward","childrenProps","onMouseOver","childIsFocusVisible","setChildIsFocusVisible","handleLeave","detectTouchStart","handleUseRef","handleFocusRef","shouldShowNativeTitle","interactiveWrapperListeners","mergedPopperProps","enabled","popperInteractive","popperArrow","placementInner","TransitionPropsInner","touch","tooltipArrow","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","Avatar","alt","childrenProp","imgProps","srcSet","loaded","setLoaded","Image","useLoaded","hasImg","hasImgNotFailing","Person","system","colorDefault","objectFit","textIndent","directions","marginX","marginY","paddingX","paddingY","getCssProperties","_prop$split","_prop$split2","spacingKeys","themeSpacing","getStyleFromPropValue","cssProperties","transformer","transformed"],"mappings":"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ACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBAAuB,mBAEvB,mBACA,mBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBAAuB,mBAEvB,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,kBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBAAuB,mBAEvB,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBAAuB,mBAEvB,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBAAuB,mBAEvB,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBAAuB,mBAEvB,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,iBACA,kBAAuB,mBAEvB,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,oBACA,mBACA,oBACA,oBACA,mBACA,mBACA,mBAEA,mBACA,mBACA,oBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,kBAAuB,mBAEvB,kBACA,iBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,mBACA,oBACA,oBACA,oBACA,iBACA,mBACA,kBAAuB,kBAEvB,kBACA,kBACA,oBACA,kBACA,kBACA,mBACA,kBACA,mBACA,oBACA,iBACA,kBACA,mBACA,oBACA,oBACA,mBACA,kBACA,kBAAuB,kBAEvB,kBACA,kBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACA,kBACA,iBAAuB,mBAEvB,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,kBAAuB,mBAEvB,kBACA,iBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,kBACA,mBAAuB,mBAEvB,iBACA,kBACA,oBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,kBACA,mBAAuB,kBAEvB,WAAgBP,EAAO1B,MAAQ,GAAM,QACrC,WAAgB0B,EAAO1B,MAAQ,GAAM,QACrC,WAAe0B,EAAO1B,MAAQ,GAAM,QACpC,WAAe0B,EAAO1B,MAAQ,GAAM,QACpC,UAAc0B,EAAO1B,MAAQ,GAAM,QACnC,UAAc0B,EAAO1B,MAAQ,GAAM,QACnC,UAAc0B,EAAO1B,MAAQ,GAAM,QACnC,SAAa0B,EAAO1B,MAAQ,GAAM,QAElC,mBAA2B,mBAC3B,kBAAyB,mBACzB,mBAA0B,mBAC1B,mBAMEkC,EAAM,CACN,CACC,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBAEA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,sBAEF,CACC,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,qBAED,EACA,EACA,EACA,EACA,EACA,GACC,sBACA,sBACA,sBAEF,CACC,kBACA,iBACA,kBAEA,kBACA,kBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBAEA,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I,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhEA,OAAkB,CACd,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzD,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhEA,KAAgB,CACZ,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzD,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI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oC,OAWnDpC,GAASqC,SAAW,CAChB,MAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,QAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,QAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,QAAU,QAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,QAAU,QAAU,QAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,OAAU,OAAU,QAAU,OAAU,QAAU,OAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,QAAU,QAAU,QAAU,QAAU,QAAU,QAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,QACtE,QAAU,QAAU,QAAU,QAAU,QAAU,OAAU,QAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,OACtE,OAAU,QAAU,QAAU,QAAU,QAAU,QAAU,QAAU,OACtE,OAAU,OAAU,OAAU,OAAU,OAAU,OAAU,QAAU,QACtE,QAAU,QAAU,QAAU,QAAU,QAAU,QAAU,QAAU,OACtE,OAAU,OAAU,OAAU,OAAU,QAA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","file":"static/js/2.fc2fd181.chunk.js","sourcesContent":["'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","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}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","// @flow\n\ndeclare var SC_DISABLE_SPEEDY: ?boolean;\ndeclare var __VERSION__: string;\n\nexport const SC_ATTR =\n (typeof process !== 'undefined' && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY =\n (typeof SC_DISABLE_SPEEDY === 'boolean' && SC_DISABLE_SPEEDY) ||\n (typeof process !== 'undefined' &&\n (process.env.REACT_APP_SC_DISABLE_SPEEDY || process.env.SC_DISABLE_SPEEDY)) ||\n process.env.NODE_ENV !== 'production';\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport { makeStyleTag, getSheet } from './dom';\nimport type { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions): Tag => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n\n // Avoid Edge bug where empty style elements don't create sheets\n element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule !== undefined && typeof rule.cssText === 'string') {\n return rule.cssText;\n } else {\n return '';\n }\n }\n}\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport class TextTag implements Tag {\n element: HTMLStyleElement;\n\n nodes: NodeList;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n this.nodes = element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.nodes[index].textContent;\n } else {\n return '';\n }\n }\n}\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: HTMLElement) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n}\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport type { GroupedTag, Tag } from './types';\nimport { SPLITTER } from '../constants';\nimport throwStyledError from '../utils/error';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag): GroupedTag => {\n return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nclass DefaultGroupedTag implements GroupedTag {\n groupSizes: Uint32Array;\n\n length: number;\n\n tag: Tag;\n\n constructor(tag: Tag) {\n this.groupSizes = new Uint32Array(BASE_SIZE);\n this.length = BASE_SIZE;\n this.tag = tag;\n }\n\n indexOfGroup(group: number): number {\n let index = 0;\n for (let i = 0; i < group; i++) {\n index += this.groupSizes[i];\n }\n\n return index;\n }\n\n insertRules(group: number, rules: string[]): void {\n if (group >= this.groupSizes.length) {\n const oldBuffer = this.groupSizes;\n const oldSize = oldBuffer.length;\n\n let newSize = oldSize;\n while (group >= newSize) {\n newSize <<= 1;\n if (newSize < 0) {\n throwStyledError(16, `${group}`);\n }\n }\n\n this.groupSizes = new Uint32Array(newSize);\n this.groupSizes.set(oldBuffer);\n this.length = newSize;\n\n for (let i = oldSize; i < newSize; i++) {\n this.groupSizes[i] = 0;\n }\n }\n\n let ruleIndex = this.indexOfGroup(group + 1);\n for (let i = 0, l = rules.length; i < l; i++) {\n if (this.tag.insertRule(ruleIndex, rules[i])) {\n this.groupSizes[group]++;\n ruleIndex++;\n }\n }\n }\n\n clearGroup(group: number): void {\n if (group < this.length) {\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n this.groupSizes[group] = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n this.tag.deleteRule(startIndex);\n }\n }\n }\n\n getGroup(group: number): string {\n let css = '';\n if (group >= this.length || this.groupSizes[group] === 0) {\n return css;\n }\n\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n for (let i = startIndex; i < endIndex; i++) {\n css += `${this.tag.getRule(i)}${SPLITTER}`;\n }\n\n return css;\n }\n}\n","// @flow\n\nimport throwStyledError from '../utils/error';\n\nconst MAX_SMI = 1 << 31 - 1;\n\nlet groupIDRegister: Map = new Map();\nlet reverseRegister: Map = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n groupIDRegister = new Map();\n reverseRegister = new Map();\n nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n if (groupIDRegister.has(id)) {\n return (groupIDRegister.get(id): any);\n }\n\n const group = nextFreeGroup++;\n if (\n process.env.NODE_ENV !== 'production' &&\n ((group | 0) < 0 || group > MAX_SMI)\n ) {\n throwStyledError(16, `${group}`);\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n if (group >= nextFreeGroup) {\n nextFreeGroup = group + 1;\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n};\n","// @flow\nimport { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport type { GroupedTag, Sheet, SheetOptions } from './types';\nimport { makeTag } from './Tag';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean,\n useCSSOMInjection?: boolean,\n target?: HTMLElement,\n};\n\ntype GlobalStylesAllocationMap = { [key: string]: number };\ntype NamesAllocationMap = Map>;\n\nconst defaultOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n\n names: NamesAllocationMap;\n\n options: SheetOptions;\n\n tag: void | GroupedTag;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = defaultOptions,\n globalStyles?: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names);\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.options.isServer && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs) {\n return new StyleSheet({ ...this.options, ...options }, this.gs, this.names);\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag(): GroupedTag {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id): any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id): any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id): any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n\n /** Outputs the current sheet as a CSS string with markers for SSR */\n toString(): string {\n return outputSheet(this);\n }\n}\n","// @flow\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\nimport type { RuleSet } from '../types';\n\nexport default function isStaticRules(rules: RuleSet): boolean {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","// @flow\n\nimport flatten from '../utils/flatten';\nimport { hash, phash } from '../utils/hash';\nimport generateName from '../utils/generateAlphabeticName';\nimport isStaticRules from '../utils/isStaticRules';\nimport StyleSheet from '../sheet';\n\nimport type { RuleSet, Stringifier } from '../types';\n\n/*\n ComponentStyle is all the CSS-specific stuff, not\n the React-specific stuff.\n */\nexport default class ComponentStyle {\n baseHash: number;\n\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n staticRulesId: string;\n\n constructor(rules: RuleSet, componentId: string) {\n this.rules = rules;\n this.staticRulesId = '';\n this.isStatic = process.env.NODE_ENV === 'production' && isStaticRules(rules);\n this.componentId = componentId;\n this.baseHash = hash(componentId);\n\n // NOTE: This registers the componentId, which ensures a consistent order\n // for this component's styles compared to others\n StyleSheet.registerId(componentId);\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n generateAndInjectStyles(executionContext: Object, styleSheet: StyleSheet, stylis: Stringifier) {\n const { componentId } = this;\n\n // force dynamic classnames if user-supplied stylis plugins are in use\n if (this.isStatic && !stylis.hash) {\n if (this.staticRulesId && styleSheet.hasNameForId(componentId, this.staticRulesId)) {\n return this.staticRulesId;\n }\n\n const cssStatic = flatten(this.rules, executionContext, styleSheet).join('');\n const name = generateName(phash(this.baseHash, cssStatic.length) >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, componentId);\n\n styleSheet.insertRules(componentId, name, cssStaticFormatted);\n }\n\n this.staticRulesId = name;\n\n return name;\n } else {\n const { length } = this.rules;\n let dynamicHash = phash(this.baseHash, stylis.hash);\n let css = '';\n\n for (let i = 0; i < length; i++) {\n const partRule = this.rules[i];\n if (typeof partRule === 'string') {\n css += partRule;\n\n if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule + i);\n } else {\n const partChunk = flatten(partRule, executionContext, styleSheet);\n const partString = Array.isArray(partChunk) ? partChunk.join('') : partChunk;\n dynamicHash = phash(dynamicHash, partString + i);\n css += partString;\n }\n }\n\n const name = generateName(dynamicHash >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssFormatted = stylis(css, `.${name}`, undefined, componentId);\n styleSheet.insertRules(componentId, name, cssFormatted);\n }\n\n return name;\n }\n }\n}\n","// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport React, {\n createElement,\n useContext,\n useDebugValue,\n type AbstractComponent,\n type Ref,\n} from 'react';\nimport hoist from 'hoist-non-react-statics';\nimport merge from '../utils/mixinDeep';\nimport ComponentStyle from './ComponentStyle';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport determineTheme from '../utils/determineTheme';\nimport escape from '../utils/escape';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport generateComponentId from '../utils/generateComponentId';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport joinStrings from '../utils/joinStrings';\nimport { ThemeContext } from './ThemeProvider';\nimport { useStyleSheet, useStylis } from './StyleSheetManager';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\n\nimport type { Attrs, RuleSet, Target } from '../types';\n\n/* global $Call */\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(displayName: string, parentComponentId: string) {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(name + identifiers[name])}`;\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useResolvedAttrs(theme: any = EMPTY_OBJECT, props: Config, attrs: Attrs) {\n // NOTE: can't memoize this\n // returns [context, resolvedAttrs]\n // where resolvedAttrs is only the things injected by the attrs themselves\n const context = { ...props, theme };\n const resolvedAttrs = {};\n\n attrs.forEach(attrDef => {\n let resolvedAttrDef = attrDef;\n let key;\n\n if (isFunction(resolvedAttrDef)) {\n resolvedAttrDef = resolvedAttrDef(context);\n }\n\n /* eslint-disable guard-for-in */\n for (key in resolvedAttrDef) {\n context[key] = resolvedAttrs[key] =\n key === 'className'\n ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key])\n : resolvedAttrDef[key];\n }\n /* eslint-enable guard-for-in */\n });\n\n return [context, resolvedAttrs];\n}\n\ninterface StyledComponentWrapperProperties {\n attrs: Attrs;\n componentStyle: ComponentStyle;\n displayName: string;\n foldedComponentIds: Array;\n target: Target;\n shouldForwardProp: ?(prop: string, isValidAttr: (prop: string) => boolean) => boolean;\n styledComponentId: string;\n warnTooManyClasses: $Call;\n}\n\ntype StyledComponentWrapper = AbstractComponent &\n StyledComponentWrapperProperties;\n\nfunction useInjectedStyle(\n componentStyle: ComponentStyle,\n hasAttrs: boolean,\n resolvedAttrs: T,\n warnTooManyClasses?: $Call\n) {\n const styleSheet = useStyleSheet();\n const stylis = useStylis();\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n const isStatic = componentStyle.isStatic && !hasAttrs;\n\n const className = isStatic\n ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis)\n : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n\n useDebugValue(className);\n\n if (process.env.NODE_ENV !== 'production' && !isStatic && warnTooManyClasses) {\n warnTooManyClasses(className);\n }\n\n return className;\n}\n\nfunction useStyledComponentImpl(\n forwardedComponent: StyledComponentWrapper,\n props: Object,\n forwardedRef: Ref\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n // $FlowFixMe\n defaultProps,\n foldedComponentIds,\n // $FlowFixMe\n shouldForwardProp,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n useDebugValue(styledComponentId);\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, useContext(ThemeContext), defaultProps);\n\n const [context, attrs] = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs);\n\n const generatedClassName = useInjectedStyle(\n componentStyle,\n componentAttrs.length > 0,\n context,\n process.env.NODE_ENV !== 'production' ? forwardedComponent.warnTooManyClasses : undefined\n );\n\n const refToForward = forwardedRef;\n\n const elementToBeCreated: Target = attrs.$as || props.$as || attrs.as || props.as || target;\n\n const isTargetTag = isTag(elementToBeCreated);\n const computedProps = attrs !== props ? { ...props, ...attrs } : props;\n const propFilterFn = shouldForwardProp || (isTargetTag && validAttr);\n const propsForElement = {};\n\n // eslint-disable-next-line guard-for-in\n for (const key in computedProps) {\n if (key[0] === '$' || key === 'as') continue;\n else if (key === 'forwardedAs') {\n propsForElement.as = computedProps[key];\n } else if (!propFilterFn || propFilterFn(key, validAttr)) {\n // Don't pass through non HTML tags through to HTML elements\n propsForElement[key] = computedProps[key];\n }\n }\n\n if (props.style && attrs.style !== props.style) {\n propsForElement.style = { ...props.style, ...attrs.style };\n }\n\n propsForElement.className = Array.prototype\n .concat(\n foldedComponentIds,\n styledComponentId,\n generatedClassName !== styledComponentId ? generatedClassName : null,\n props.className,\n attrs.className\n )\n .filter(Boolean)\n .join(' ');\n\n propsForElement.ref = refToForward;\n\n return createElement(elementToBeCreated, propsForElement);\n}\n\nexport default function createStyledComponent(\n target: Target | StyledComponentWrapper<*, *>,\n options: Object,\n rules: RuleSet\n) {\n const isTargetStyledComp = isStyledComponent(target);\n const isCompositeComponent = !isTag(target);\n\n const {\n displayName = generateDisplayName(target),\n componentId = generateId(options.displayName, options.parentComponentId),\n attrs = EMPTY_ARRAY,\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n // $FlowFixMe\n isTargetStyledComp && target.attrs\n ? Array.prototype.concat(target.attrs, attrs).filter(Boolean)\n : attrs;\n\n // eslint-disable-next-line prefer-destructuring\n let shouldForwardProp = options.shouldForwardProp;\n\n // $FlowFixMe\n if (isTargetStyledComp && target.shouldForwardProp) {\n if (shouldForwardProp) {\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, filterFn) =>\n // $FlowFixMe\n target.shouldForwardProp(prop, filterFn) && options.shouldForwardProp(prop, filterFn);\n } else {\n // eslint-disable-next-line prefer-destructuring\n shouldForwardProp = target.shouldForwardProp;\n }\n }\n\n const componentStyle = new ComponentStyle(\n isTargetStyledComp\n ? // fold the underlying StyledComponent rules up (implicit extend)\n // $FlowFixMe\n target.componentStyle.rules.concat(rules)\n : rules,\n styledComponentId\n );\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const forwardRef = (props, ref) => useStyledComponentImpl(WrappedStyledComponent, props, ref);\n\n forwardRef.displayName = displayName;\n\n // $FlowFixMe this is a forced cast to merge it StyledComponentWrapperProperties\n WrappedStyledComponent = (React.forwardRef(forwardRef): StyledComponentWrapper<*, *>);\n\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? // $FlowFixMe\n Array.prototype.concat(target.foldedComponentIds, target.styledComponentId)\n : EMPTY_ARRAY;\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp\n ? // $FlowFixMe\n target.target\n : target;\n\n // $FlowFixMe\n WrappedStyledComponent.withComponent = function withComponent(tag: Target) {\n const { componentId: previousComponentId, ...optionsToCopy } = options;\n\n const newComponentId =\n previousComponentId &&\n `${previousComponentId}-${isTag(tag) ? tag : escape(getComponentName(tag))}`;\n\n const newOptions = {\n ...optionsToCopy,\n attrs: finalAttrs,\n componentId: newComponentId,\n };\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n // $FlowFixMe\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n // $FlowFixMe\n this._foldedDefaultProps = isTargetStyledComp ? merge({}, target.defaultProps, obj) : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n // $FlowFixMe\n WrappedStyledComponent.toString = () => `.${WrappedStyledComponent.styledComponentId}`;\n\n if (isCompositeComponent) {\n hoist(WrappedStyledComponent, (target: any), {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n self: true,\n styledComponentId: true,\n target: true,\n withComponent: true,\n });\n }\n\n return WrappedStyledComponent;\n}\n","// @flow\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\nimport StyleSheet from '../sheet';\n\nimport type { RuleSet, Stringifier } from '../types';\n\nexport default class GlobalStyle {\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n constructor(rules: RuleSet, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules);\n }\n\n createStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n const flatCSS = flatten(this.rules, executionContext, styleSheet);\n const css = stylis(flatCSS.join(''), '');\n const id = this.componentId + instance;\n\n // NOTE: We use the id as a name as well, since these rules never change\n styleSheet.insertRules(id, id, css);\n }\n\n removeStyles(instance: number, styleSheet: StyleSheet) {\n styleSheet.clearRules(this.componentId + instance);\n }\n\n renderStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n StyleSheet.registerId(this.componentId + instance);\n\n // NOTE: Remove old styles, then inject the new ones\n this.removeStyles(instance, styleSheet);\n this.createStyles(instance, executionContext, styleSheet, stylis);\n }\n}\n","// @flow\nimport React, { useContext, useEffect, useRef } from 'react';\nimport { STATIC_EXECUTION_CONTEXT } from '../constants';\nimport GlobalStyle from '../models/GlobalStyle';\nimport { useStyleSheet, useStylis } from '../models/StyleSheetManager';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport determineTheme from '../utils/determineTheme';\nimport { ThemeContext } from '../models/ThemeProvider';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport generateComponentId from '../utils/generateComponentId';\nimport css from './css';\n\nimport type { Interpolation } from '../types';\n\ntype GlobalStyleComponentPropsType = Object;\n\nexport default function createGlobalStyle(\n strings: Array,\n ...interpolations: Array\n) {\n const rules = css(strings, ...interpolations);\n const styledComponentId = `sc-global-${generateComponentId(JSON.stringify(rules))}`;\n const globalStyle = new GlobalStyle(rules, styledComponentId);\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(styledComponentId);\n }\n\n function GlobalStyleComponent(props: GlobalStyleComponentPropsType) {\n const styleSheet = useStyleSheet();\n const stylis = useStylis();\n const theme = useContext(ThemeContext);\n const instanceRef = useRef(null);\n\n if (instanceRef.current === null) {\n instanceRef.current = styleSheet.allocateGSInstance(styledComponentId);\n }\n\n const instance = instanceRef.current;\n\n if (process.env.NODE_ENV !== 'production' && React.Children.count(props.children)) {\n // eslint-disable-next-line no-console\n console.warn(\n `The global style component ${styledComponentId} was given child JSX. createGlobalStyle does not render children.`\n );\n }\n\n if (\n process.env.NODE_ENV !== 'production' &&\n rules.some(rule => typeof rule === 'string' && rule.indexOf('@import') !== -1)\n ) {\n console.warn(\n `Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.`\n );\n }\n\n if (globalStyle.isStatic) {\n globalStyle.renderStyles(instance, STATIC_EXECUTION_CONTEXT, styleSheet, stylis);\n } else {\n const context = {\n ...props,\n theme: determineTheme(props, theme, GlobalStyleComponent.defaultProps),\n };\n\n globalStyle.renderStyles(instance, context, styleSheet, stylis);\n }\n\n useEffect(() => () => globalStyle.removeStyles(instance, styleSheet), EMPTY_ARRAY);\n\n return null;\n }\n\n // $FlowFixMe\n return React.memo(GlobalStyleComponent);\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _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}","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","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_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}","export default 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 * 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","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport makeStyles from '../makeStyles';\nimport getThemeProps from '../getThemeProps';\nimport useTheme from '../useTheme'; // Link a style sheet with a component.\n// It does not modify the component passed to it;\n// instead, it returns a new component, with a `classes` property.\n\nvar withStyles = function withStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function (Component) {\n var defaultTheme = options.defaultTheme,\n _options$withTheme = options.withTheme,\n withTheme = _options$withTheme === void 0 ? false : _options$withTheme,\n name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"defaultTheme\", \"withTheme\", \"name\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withStyles(styles)(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n var classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n var useStyles = makeStyles(stylesOrCreator, _extends({\n defaultTheme: defaultTheme,\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var WithStyles = React.forwardRef(function WithStyles(props, ref) {\n var classesProp = props.classes,\n innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"classes\", \"innerRef\"]); // The wrapper receives only user supplied props, which could be a subset of\n // the actual props Component might receive due to merging with defaultProps.\n // So copying it here would give us the same result in the wrapper as well.\n\n\n var classes = useStyles(_extends(_extends({}, Component.defaultProps), props));\n var theme;\n var more = other;\n\n if (typeof name === 'string' || withTheme) {\n // name and withTheme are invariant in the outer scope\n // eslint-disable-next-line react-hooks/rules-of-hooks\n theme = useTheme() || defaultTheme;\n\n if (name) {\n more = getThemeProps({\n theme: theme,\n name: name,\n props: other\n });\n } // Provide the theme to the wrapped component.\n // So we don't have to use the `withTheme()` Higher-order Component.\n\n\n if (withTheme && !more.theme) {\n more.theme = theme;\n }\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: innerRef || ref,\n classes: classes\n }, more));\n });\n process.env.NODE_ENV !== \"production\" ? WithStyles.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * Use that prop to pass a ref to the decorated component.\n * @deprecated\n */\n innerRef: chainPropTypes(PropTypes.oneOfType([PropTypes.func, PropTypes.object]), function (props) {\n if (props.innerRef == null) {\n return null;\n }\n\n return null; // return new Error(\n // 'Material-UI: The `innerRef` prop is deprecated and will be removed in v5. ' +\n // 'Refs are now automatically forwarded to the inner component.',\n // );\n })\n } : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n WithStyles.displayName = \"WithStyles(\".concat(getDisplayName(Component), \")\");\n }\n\n hoistNonReactStatics(WithStyles, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithStyles.Naked = Component;\n WithStyles.options = options;\n WithStyles.useStyles = useStyles;\n }\n\n return WithStyles;\n };\n};\n\nexport default withStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { withStyles as withStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction withStyles(stylesOrCreator, options) {\n return withStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default withStyles;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step > 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n findEntry: function(predicate, context) {\n var found;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findLastEntry: function(predicate, context) {\n return this.toSeq().reverse().findEntry(predicate, context);\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n // Temporary warning about using length\n (function () {\n try {\n Object.defineProperty(IterablePrototype, 'length', {\n get: function () {\n if (!Iterable.noLengthWarning) {\n var stack;\n try {\n throw new Error();\n } catch (error) {\n stack = error.stack;\n }\n if (stack.indexOf('_wrapObject') === -1) {\n console && console.warn && console.warn(\n 'iterable.length has been deprecated, '+\n 'use iterable.size or iterable.count(). '+\n 'This warning will become a silent error in a future version. ' +\n stack\n );\n return this.size;\n }\n }\n }\n });\n } catch (e) {}\n })();\n\n\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLastKey: function(predicate, context) {\n return this.toSeq().reverse().findKey(predicate, context);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n lastKeyOf: function(searchValue) {\n return this.findLastKey(function(value ) {return is(value, searchValue)});\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.toKeyedSeq().keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n return key === undefined ? -1 : key;\n\n // var index =\n // return this.toSeq().reverse().indexOf(searchValue);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var key = this.toKeyedSeq().findLastKey(predicate, context);\n return key === undefined ? -1 : key;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : value;\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return React.useMemo(function () {\n if (refA == null && refB == null) {\n return null;\n }\n\n return function (refValue) {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\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 = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\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 */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {} : function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n};\n/**\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 to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word a the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: capitalize(string) expects a string argument.\" : _formatMuiErrorMessage(7));\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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 BlockTree = require(\"./BlockTree\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar EditorBidiService = require(\"./EditorBidiService\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Stack = Immutable.Stack,\n OrderedMap = Immutable.OrderedMap,\n List = Immutable.List; // When configuring an editor, the user can chose to provide or not provide\n// basically all keys. `currentContent` varies, so this type doesn't include it.\n// (See the types defined below.)\n\nvar defaultRecord = {\n allowUndo: true,\n currentContent: null,\n decorator: null,\n directionMap: null,\n forceSelection: false,\n inCompositionMode: false,\n inlineStyleOverride: null,\n lastChangeType: null,\n nativelyRenderedContent: null,\n redoStack: Stack(),\n selection: null,\n treeMap: null,\n undoStack: Stack()\n};\nvar EditorStateRecord = Record(defaultRecord);\n\nvar EditorState =\n/*#__PURE__*/\nfunction () {\n EditorState.createEmpty = function createEmpty(decorator) {\n return EditorState.createWithContent(ContentState.createFromText(''), decorator);\n };\n\n EditorState.createWithContent = function createWithContent(contentState, decorator) {\n if (contentState.getBlockMap().count() === 0) {\n return EditorState.createEmpty(decorator);\n }\n\n var firstKey = contentState.getBlockMap().first().getKey();\n return EditorState.create({\n currentContent: contentState,\n undoStack: Stack(),\n redoStack: Stack(),\n decorator: decorator || null,\n selection: SelectionState.createEmpty(firstKey)\n });\n };\n\n EditorState.create = function create(config) {\n var currentContent = config.currentContent,\n decorator = config.decorator;\n\n var recordConfig = _objectSpread({}, config, {\n treeMap: generateNewTreeMap(currentContent, decorator),\n directionMap: EditorBidiService.getDirectionMap(currentContent)\n });\n\n return new EditorState(new EditorStateRecord(recordConfig));\n };\n\n EditorState.fromJS = function fromJS(config) {\n return new EditorState(new EditorStateRecord(_objectSpread({}, config, {\n directionMap: config.directionMap != null ? OrderedMap(config.directionMap) : config.directionMap,\n inlineStyleOverride: config.inlineStyleOverride != null ? OrderedSet(config.inlineStyleOverride) : config.inlineStyleOverride,\n nativelyRenderedContent: config.nativelyRenderedContent != null ? ContentState.fromJS(config.nativelyRenderedContent) : config.nativelyRenderedContent,\n redoStack: config.redoStack != null ? Stack(config.redoStack.map(function (v) {\n return ContentState.fromJS(v);\n })) : config.redoStack,\n selection: config.selection != null ? new SelectionState(config.selection) : config.selection,\n treeMap: config.treeMap != null ? OrderedMap(config.treeMap).map(function (v) {\n return List(v).map(function (v) {\n return BlockTree.fromJS(v);\n });\n }) : config.treeMap,\n undoStack: config.undoStack != null ? Stack(config.undoStack.map(function (v) {\n return ContentState.fromJS(v);\n })) : config.undoStack,\n currentContent: ContentState.fromJS(config.currentContent)\n })));\n };\n\n EditorState.set = function set(editorState, put) {\n var map = editorState.getImmutable().withMutations(function (state) {\n var existingDecorator = state.get('decorator');\n var decorator = existingDecorator;\n\n if (put.decorator === null) {\n decorator = null;\n } else if (put.decorator) {\n decorator = put.decorator;\n }\n\n var newContent = put.currentContent || editorState.getCurrentContent();\n\n if (decorator !== existingDecorator) {\n var treeMap = state.get('treeMap');\n var newTreeMap;\n\n if (decorator && existingDecorator) {\n newTreeMap = regenerateTreeForNewDecorator(newContent, newContent.getBlockMap(), treeMap, decorator, existingDecorator);\n } else {\n newTreeMap = generateNewTreeMap(newContent, decorator);\n }\n\n state.merge({\n decorator: decorator,\n treeMap: newTreeMap,\n nativelyRenderedContent: null\n });\n return;\n }\n\n var existingContent = editorState.getCurrentContent();\n\n if (newContent !== existingContent) {\n state.set('treeMap', regenerateTreeForNewBlocks(editorState, newContent.getBlockMap(), newContent.getEntityMap(), decorator));\n }\n\n state.merge(put);\n });\n return new EditorState(map);\n };\n\n var _proto = EditorState.prototype;\n\n _proto.toJS = function toJS() {\n return this.getImmutable().toJS();\n };\n\n _proto.getAllowUndo = function getAllowUndo() {\n return this.getImmutable().get('allowUndo');\n };\n\n _proto.getCurrentContent = function getCurrentContent() {\n return this.getImmutable().get('currentContent');\n };\n\n _proto.getUndoStack = function getUndoStack() {\n return this.getImmutable().get('undoStack');\n };\n\n _proto.getRedoStack = function getRedoStack() {\n return this.getImmutable().get('redoStack');\n };\n\n _proto.getSelection = function getSelection() {\n return this.getImmutable().get('selection');\n };\n\n _proto.getDecorator = function getDecorator() {\n return this.getImmutable().get('decorator');\n };\n\n _proto.isInCompositionMode = function isInCompositionMode() {\n return this.getImmutable().get('inCompositionMode');\n };\n\n _proto.mustForceSelection = function mustForceSelection() {\n return this.getImmutable().get('forceSelection');\n };\n\n _proto.getNativelyRenderedContent = function getNativelyRenderedContent() {\n return this.getImmutable().get('nativelyRenderedContent');\n };\n\n _proto.getLastChangeType = function getLastChangeType() {\n return this.getImmutable().get('lastChangeType');\n }\n /**\n * While editing, the user may apply inline style commands with a collapsed\n * cursor, intending to type text that adopts the specified style. In this\n * case, we track the specified style as an \"override\" that takes precedence\n * over the inline style of the text adjacent to the cursor.\n *\n * If null, there is no override in place.\n */\n ;\n\n _proto.getInlineStyleOverride = function getInlineStyleOverride() {\n return this.getImmutable().get('inlineStyleOverride');\n };\n\n EditorState.setInlineStyleOverride = function setInlineStyleOverride(editorState, inlineStyleOverride) {\n return EditorState.set(editorState, {\n inlineStyleOverride: inlineStyleOverride\n });\n }\n /**\n * Get the appropriate inline style for the editor state. If an\n * override is in place, use it. Otherwise, the current style is\n * based on the location of the selection state.\n */\n ;\n\n _proto.getCurrentInlineStyle = function getCurrentInlineStyle() {\n var override = this.getInlineStyleOverride();\n\n if (override != null) {\n return override;\n }\n\n var content = this.getCurrentContent();\n var selection = this.getSelection();\n\n if (selection.isCollapsed()) {\n return getInlineStyleForCollapsedSelection(content, selection);\n }\n\n return getInlineStyleForNonCollapsedSelection(content, selection);\n };\n\n _proto.getBlockTree = function getBlockTree(blockKey) {\n return this.getImmutable().getIn(['treeMap', blockKey]);\n };\n\n _proto.isSelectionAtStartOfContent = function isSelectionAtStartOfContent() {\n var firstKey = this.getCurrentContent().getBlockMap().first().getKey();\n return this.getSelection().hasEdgeWithin(firstKey, 0, 0);\n };\n\n _proto.isSelectionAtEndOfContent = function isSelectionAtEndOfContent() {\n var content = this.getCurrentContent();\n var blockMap = content.getBlockMap();\n var last = blockMap.last();\n var end = last.getLength();\n return this.getSelection().hasEdgeWithin(last.getKey(), end, end);\n };\n\n _proto.getDirectionMap = function getDirectionMap() {\n return this.getImmutable().get('directionMap');\n }\n /**\n * Incorporate native DOM selection changes into the EditorState. This\n * method can be used when we simply want to accept whatever the DOM\n * has given us to represent selection, and we do not need to re-render\n * the editor.\n *\n * To forcibly move the DOM selection, see `EditorState.forceSelection`.\n */\n ;\n\n EditorState.acceptSelection = function acceptSelection(editorState, selection) {\n return updateSelection(editorState, selection, false);\n }\n /**\n * At times, we need to force the DOM selection to be where we\n * need it to be. This can occur when the anchor or focus nodes\n * are non-text nodes, for instance. In this case, we want to trigger\n * a re-render of the editor, which in turn forces selection into\n * the correct place in the DOM. The `forceSelection` method\n * accomplishes this.\n *\n * This method should be used in cases where you need to explicitly\n * move the DOM selection from one place to another without a change\n * in ContentState.\n */\n ;\n\n EditorState.forceSelection = function forceSelection(editorState, selection) {\n if (!selection.getHasFocus()) {\n selection = selection.set('hasFocus', true);\n }\n\n return updateSelection(editorState, selection, true);\n }\n /**\n * Move selection to the end of the editor without forcing focus.\n */\n ;\n\n EditorState.moveSelectionToEnd = function moveSelectionToEnd(editorState) {\n var content = editorState.getCurrentContent();\n var lastBlock = content.getLastBlock();\n var lastKey = lastBlock.getKey();\n var length = lastBlock.getLength();\n return EditorState.acceptSelection(editorState, new SelectionState({\n anchorKey: lastKey,\n anchorOffset: length,\n focusKey: lastKey,\n focusOffset: length,\n isBackward: false\n }));\n }\n /**\n * Force focus to the end of the editor. This is useful in scenarios\n * where we want to programmatically focus the input and it makes sense\n * to allow the user to continue working seamlessly.\n */\n ;\n\n EditorState.moveFocusToEnd = function moveFocusToEnd(editorState) {\n var afterSelectionMove = EditorState.moveSelectionToEnd(editorState);\n return EditorState.forceSelection(afterSelectionMove, afterSelectionMove.getSelection());\n }\n /**\n * Push the current ContentState onto the undo stack if it should be\n * considered a boundary state, and set the provided ContentState as the\n * new current content.\n */\n ;\n\n EditorState.push = function push(editorState, contentState, changeType) {\n var forceSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (editorState.getCurrentContent() === contentState) {\n return editorState;\n }\n\n var directionMap = EditorBidiService.getDirectionMap(contentState, editorState.getDirectionMap());\n\n if (!editorState.getAllowUndo()) {\n return EditorState.set(editorState, {\n currentContent: contentState,\n directionMap: directionMap,\n lastChangeType: changeType,\n selection: contentState.getSelectionAfter(),\n forceSelection: forceSelection,\n inlineStyleOverride: null\n });\n }\n\n var selection = editorState.getSelection();\n var currentContent = editorState.getCurrentContent();\n var undoStack = editorState.getUndoStack();\n var newContent = contentState;\n\n if (selection !== currentContent.getSelectionAfter() || mustBecomeBoundary(editorState, changeType)) {\n undoStack = undoStack.push(currentContent);\n newContent = newContent.set('selectionBefore', selection);\n } else if (changeType === 'insert-characters' || changeType === 'backspace-character' || changeType === 'delete-character') {\n // Preserve the previous selection.\n newContent = newContent.set('selectionBefore', currentContent.getSelectionBefore());\n }\n\n var inlineStyleOverride = editorState.getInlineStyleOverride(); // Don't discard inline style overrides for the following change types:\n\n var overrideChangeTypes = ['adjust-depth', 'change-block-type', 'split-block'];\n\n if (overrideChangeTypes.indexOf(changeType) === -1) {\n inlineStyleOverride = null;\n }\n\n var editorStateChanges = {\n currentContent: newContent,\n directionMap: directionMap,\n undoStack: undoStack,\n redoStack: Stack(),\n lastChangeType: changeType,\n selection: contentState.getSelectionAfter(),\n forceSelection: forceSelection,\n inlineStyleOverride: inlineStyleOverride\n };\n return EditorState.set(editorState, editorStateChanges);\n }\n /**\n * Make the top ContentState in the undo stack the new current content and\n * push the current content onto the redo stack.\n */\n ;\n\n EditorState.undo = function undo(editorState) {\n if (!editorState.getAllowUndo()) {\n return editorState;\n }\n\n var undoStack = editorState.getUndoStack();\n var newCurrentContent = undoStack.peek();\n\n if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n return EditorState.set(editorState, {\n currentContent: newCurrentContent,\n directionMap: directionMap,\n undoStack: undoStack.shift(),\n redoStack: editorState.getRedoStack().push(currentContent),\n forceSelection: true,\n inlineStyleOverride: null,\n lastChangeType: 'undo',\n nativelyRenderedContent: null,\n selection: currentContent.getSelectionBefore()\n });\n }\n /**\n * Make the top ContentState in the redo stack the new current content and\n * push the current content onto the undo stack.\n */\n ;\n\n EditorState.redo = function redo(editorState) {\n if (!editorState.getAllowUndo()) {\n return editorState;\n }\n\n var redoStack = editorState.getRedoStack();\n var newCurrentContent = redoStack.peek();\n\n if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n return EditorState.set(editorState, {\n currentContent: newCurrentContent,\n directionMap: directionMap,\n undoStack: editorState.getUndoStack().push(currentContent),\n redoStack: redoStack.shift(),\n forceSelection: true,\n inlineStyleOverride: null,\n lastChangeType: 'redo',\n nativelyRenderedContent: null,\n selection: newCurrentContent.getSelectionAfter()\n });\n }\n /**\n * Not for public consumption.\n */\n ;\n\n function EditorState(immutable) {\n _defineProperty(this, \"_immutable\", void 0);\n\n this._immutable = immutable;\n }\n /**\n * Not for public consumption.\n */\n\n\n _proto.getImmutable = function getImmutable() {\n return this._immutable;\n };\n\n return EditorState;\n}();\n/**\n * Set the supplied SelectionState as the new current selection, and set\n * the `force` flag to trigger manual selection placement by the view.\n */\n\n\nfunction updateSelection(editorState, selection, forceSelection) {\n return EditorState.set(editorState, {\n selection: selection,\n forceSelection: forceSelection,\n nativelyRenderedContent: null,\n inlineStyleOverride: null\n });\n}\n/**\n * Regenerate the entire tree map for a given ContentState and decorator.\n * Returns an OrderedMap that maps all available ContentBlock objects.\n */\n\n\nfunction generateNewTreeMap(contentState, decorator) {\n return contentState.getBlockMap().map(function (block) {\n return BlockTree.generate(contentState, block, decorator);\n }).toOrderedMap();\n}\n/**\n * Regenerate tree map objects for all ContentBlocks that have changed\n * between the current editorState and newContent. Returns an OrderedMap\n * with only changed regenerated tree map objects.\n */\n\n\nfunction regenerateTreeForNewBlocks(editorState, newBlockMap, newEntityMap, decorator) {\n var contentState = editorState.getCurrentContent().set('entityMap', newEntityMap);\n var prevBlockMap = contentState.getBlockMap();\n var prevTreeMap = editorState.getImmutable().get('treeMap');\n return prevTreeMap.merge(newBlockMap.toSeq().filter(function (block, key) {\n return block !== prevBlockMap.get(key);\n }).map(function (block) {\n return BlockTree.generate(contentState, block, decorator);\n }));\n}\n/**\n * Generate tree map objects for a new decorator object, preserving any\n * decorations that are unchanged from the previous decorator.\n *\n * Note that in order for this to perform optimally, decoration Lists for\n * decorators should be preserved when possible to allow for direct immutable\n * List comparison.\n */\n\n\nfunction regenerateTreeForNewDecorator(content, blockMap, previousTreeMap, decorator, existingDecorator) {\n return previousTreeMap.merge(blockMap.toSeq().filter(function (block) {\n return decorator.getDecorations(block, content) !== existingDecorator.getDecorations(block, content);\n }).map(function (block) {\n return BlockTree.generate(content, block, decorator);\n }));\n}\n/**\n * Return whether a change should be considered a boundary state, given\n * the previous change type. Allows us to discard potential boundary states\n * during standard typing or deletion behavior.\n */\n\n\nfunction mustBecomeBoundary(editorState, changeType) {\n var lastChangeType = editorState.getLastChangeType();\n return changeType !== lastChangeType || changeType !== 'insert-characters' && changeType !== 'backspace-character' && changeType !== 'delete-character';\n}\n\nfunction getInlineStyleForCollapsedSelection(content, selection) {\n var startKey = selection.getStartKey();\n var startOffset = selection.getStartOffset();\n var startBlock = content.getBlockForKey(startKey); // If the cursor is not at the start of the block, look backward to\n // preserve the style of the preceding character.\n\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n } // The caret is at position zero in this block. If the block has any\n // text at all, use the style of the first character.\n\n\n if (startBlock.getLength()) {\n return startBlock.getInlineStyleAt(0);\n } // Otherwise, look upward in the document to find the closest character.\n\n\n return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction getInlineStyleForNonCollapsedSelection(content, selection) {\n var startKey = selection.getStartKey();\n var startOffset = selection.getStartOffset();\n var startBlock = content.getBlockForKey(startKey); // If there is a character just inside the selection, use its style.\n\n if (startOffset < startBlock.getLength()) {\n return startBlock.getInlineStyleAt(startOffset);\n } // Check if the selection at the end of a non-empty block. Use the last\n // style in the block.\n\n\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n } // Otherwise, look upward in the document to find the closest character.\n\n\n return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction lookUpwardForInlineStyle(content, fromKey) {\n var lastNonEmpty = content.getBlockMap().reverse().skipUntil(function (_, k) {\n return k === fromKey;\n }).skip(1).skipUntil(function (block, _) {\n return block.getLength();\n }).first();\n\n if (lastNonEmpty) {\n return lastNonEmpty.getInlineStyleAt(lastNonEmpty.getLength() - 1);\n }\n\n return OrderedSet();\n}\n\nmodule.exports = EditorState;","'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","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nexport default function createSvgIcon(path, displayName) {\n var Component = React.memo(React.forwardRef(function (props, ref) {\n return React.createElement(SvgIcon, _extends({\n ref: ref\n }, props), path);\n }));\n\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = SvgIcon.muiName;\n return Component;\n}","\"use strict\"\r\nvar moment = require(\"moment/min/moment-with-locales.min.js\");\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.default = moment;\r\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 * @format\n * \n */\n'use strict';\n\nvar AtomicBlockUtils = require(\"./AtomicBlockUtils\");\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar CompositeDraftDecorator = require(\"./CompositeDraftDecorator\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditor = require(\"./DraftEditor.react\");\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar RawDraftContentState = require(\"./RawDraftContentState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar convertFromDraftStateToRaw = require(\"./convertFromDraftStateToRaw\");\n\nvar convertFromRawToDraftState = require(\"./convertFromRawToDraftState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getVisibleSelectionRect = require(\"./getVisibleSelectionRect\");\n\nvar convertFromHTML = require(\"./convertFromHTMLToContentBlocks\");\n\nvar DraftPublic = {\n Editor: DraftEditor,\n EditorBlock: DraftEditorBlock,\n EditorState: EditorState,\n CompositeDecorator: CompositeDraftDecorator,\n Entity: DraftEntity,\n EntityInstance: DraftEntityInstance,\n BlockMapBuilder: BlockMapBuilder,\n CharacterMetadata: CharacterMetadata,\n ContentBlock: ContentBlock,\n ContentState: ContentState,\n RawDraftContentState: RawDraftContentState,\n SelectionState: SelectionState,\n AtomicBlockUtils: AtomicBlockUtils,\n KeyBindingUtil: KeyBindingUtil,\n Modifier: DraftModifier,\n RichUtils: RichTextEditorUtil,\n DefaultDraftBlockRenderMap: DefaultDraftBlockRenderMap,\n DefaultDraftInlineStyle: DefaultDraftInlineStyle,\n convertFromHTML: convertFromHTML,\n convertFromRaw: convertFromRawToDraftState,\n convertToRaw: convertFromDraftStateToRaw,\n genKey: generateRandomKey,\n getDefaultKeyBinding: getDefaultKeyBinding,\n getVisibleSelectionRect: getVisibleSelectionRect\n};\nmodule.exports = DraftPublic;","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}","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentStateInlineStyle = require(\"./ContentStateInlineStyle\");\n\nvar applyEntityToContentState = require(\"./applyEntityToContentState\");\n\nvar getCharacterRemovalRange = require(\"./getCharacterRemovalRange\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertFragmentIntoContentState = require(\"./insertFragmentIntoContentState\");\n\nvar insertTextIntoContentState = require(\"./insertTextIntoContentState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar removeRangeFromContentState = require(\"./removeRangeFromContentState\");\n\nvar splitBlockInContentState = require(\"./splitBlockInContentState\");\n\nvar OrderedSet = Immutable.OrderedSet;\n/**\n * `DraftModifier` provides a set of convenience methods that apply\n * modifications to a `ContentState` object based on a target `SelectionState`.\n *\n * Any change to a `ContentState` should be decomposable into a series of\n * transaction functions that apply the required changes and return output\n * `ContentState` objects.\n *\n * These functions encapsulate some of the most common transaction sequences.\n */\n\nvar DraftModifier = {\n replaceText: function replaceText(contentState, rangeToReplace, text, inlineStyle, entityKey) {\n var withoutEntities = removeEntitiesAtEdges(contentState, rangeToReplace);\n var withoutText = removeRangeFromContentState(withoutEntities, rangeToReplace);\n var character = CharacterMetadata.create({\n style: inlineStyle || OrderedSet(),\n entity: entityKey || null\n });\n return insertTextIntoContentState(withoutText, withoutText.getSelectionAfter(), text, character);\n },\n insertText: function insertText(contentState, targetRange, text, inlineStyle, entityKey) {\n !targetRange.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Target range must be collapsed for `insertText`.') : invariant(false) : void 0;\n return DraftModifier.replaceText(contentState, targetRange, text, inlineStyle, entityKey);\n },\n moveText: function moveText(contentState, removalRange, targetRange) {\n var movedFragment = getContentStateFragment(contentState, removalRange);\n var afterRemoval = DraftModifier.removeRange(contentState, removalRange, 'backward');\n return DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n },\n replaceWithFragment: function replaceWithFragment(contentState, targetRange, fragment) {\n var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n var withoutEntities = removeEntitiesAtEdges(contentState, targetRange);\n var withoutText = removeRangeFromContentState(withoutEntities, targetRange);\n return insertFragmentIntoContentState(withoutText, withoutText.getSelectionAfter(), fragment, mergeBlockData);\n },\n removeRange: function removeRange(contentState, rangeToRemove, removalDirection) {\n var startKey, endKey, startBlock, endBlock;\n\n if (rangeToRemove.getIsBackward()) {\n rangeToRemove = rangeToRemove.merge({\n anchorKey: rangeToRemove.getFocusKey(),\n anchorOffset: rangeToRemove.getFocusOffset(),\n focusKey: rangeToRemove.getAnchorKey(),\n focusOffset: rangeToRemove.getAnchorOffset(),\n isBackward: false\n });\n }\n\n startKey = rangeToRemove.getAnchorKey();\n endKey = rangeToRemove.getFocusKey();\n startBlock = contentState.getBlockForKey(startKey);\n endBlock = contentState.getBlockForKey(endKey);\n var startOffset = rangeToRemove.getStartOffset();\n var endOffset = rangeToRemove.getEndOffset();\n var startEntityKey = startBlock.getEntityAt(startOffset);\n var endEntityKey = endBlock.getEntityAt(endOffset - 1); // Check whether the selection state overlaps with a single entity.\n // If so, try to remove the appropriate substring of the entity text.\n\n if (startKey === endKey) {\n if (startEntityKey && startEntityKey === endEntityKey) {\n var adjustedRemovalRange = getCharacterRemovalRange(contentState.getEntityMap(), startBlock, endBlock, rangeToRemove, removalDirection);\n return removeRangeFromContentState(contentState, adjustedRemovalRange);\n }\n }\n\n var withoutEntities = removeEntitiesAtEdges(contentState, rangeToRemove);\n return removeRangeFromContentState(withoutEntities, rangeToRemove);\n },\n splitBlock: function splitBlock(contentState, selectionState) {\n var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n var withoutText = removeRangeFromContentState(withoutEntities, selectionState);\n return splitBlockInContentState(withoutText, withoutText.getSelectionAfter());\n },\n applyInlineStyle: function applyInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.add(contentState, selectionState, inlineStyle);\n },\n removeInlineStyle: function removeInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.remove(contentState, selectionState, inlineStyle);\n },\n setBlockType: function setBlockType(contentState, selectionState, blockType) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n type: blockType,\n depth: 0\n });\n });\n },\n setBlockData: function setBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n data: blockData\n });\n });\n },\n mergeBlockData: function mergeBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n data: block.getData().merge(blockData)\n });\n });\n },\n applyEntity: function applyEntity(contentState, selectionState, entityKey) {\n var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n return applyEntityToContentState(withoutEntities, selectionState, entityKey);\n }\n};\nmodule.exports = DraftModifier;","\"use strict\";\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 */\nvar nullthrows = function nullthrows(x) {\n if (x != null) {\n return x;\n }\n\n throw new Error(\"Got unexpected null or undefined\");\n};\n\nmodule.exports = nullthrows;","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}","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\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 UserAgentData = require(\"./UserAgentData\");\n\nvar VersionRange = require(\"./VersionRange\");\n\nvar mapObject = require(\"./mapObject\");\n\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\n/**\n * Checks to see whether `name` and `version` satisfy `query`.\n *\n * @param {string} name Name of the browser, device, engine or platform\n * @param {?string} version Version of the browser, engine or platform\n * @param {string} query Query of form \"Name [range expression]\"\n * @param {?function} normalizer Optional pre-processor for range expression\n * @return {boolean}\n */\n\n\nfunction compare(name, version, query, normalizer) {\n // check for exact match with no version\n if (name === query) {\n return true;\n } // check for non-matching names\n\n\n if (!query.startsWith(name)) {\n return false;\n } // full comparison with version\n\n\n var range = query.slice(name.length);\n\n if (version) {\n range = normalizer ? normalizer(range) : range;\n return VersionRange.contains(range, version);\n }\n\n return false;\n}\n/**\n * Normalizes `version` by stripping any \"NT\" prefix, but only on the Windows\n * platform.\n *\n * Mimics the stripping performed by the `UserAgentWindowsPlatform` PHP class.\n *\n * @param {string} version\n * @return {string}\n */\n\n\nfunction normalizePlatformVersion(version) {\n if (UserAgentData.platformName === 'Windows') {\n return version.replace(/^\\s*NT/, '');\n }\n\n return version;\n}\n/**\n * Provides client-side access to the authoritative PHP-generated User Agent\n * information supplied by the server.\n */\n\n\nvar UserAgent = {\n /**\n * Check if the User Agent browser matches `query`.\n *\n * `query` should be a string like \"Chrome\" or \"Chrome > 33\".\n *\n * Valid browser names include:\n *\n * - ACCESS NetFront\n * - AOL\n * - Amazon Silk\n * - Android\n * - BlackBerry\n * - BlackBerry PlayBook\n * - Chrome\n * - Chrome for iOS\n * - Chrome frame\n * - Facebook PHP SDK\n * - Facebook for iOS\n * - Firefox\n * - IE\n * - IE Mobile\n * - Mobile Safari\n * - Motorola Internet Browser\n * - Nokia\n * - Openwave Mobile Browser\n * - Opera\n * - Opera Mini\n * - Opera Mobile\n * - Safari\n * - UIWebView\n * - Unknown\n * - webOS\n * - etc...\n *\n * An authoritative list can be found in the PHP `BrowserDetector` class and\n * related classes in the same file (see calls to `new UserAgentBrowser` here:\n * https://fburl.com/50728104).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isBrowser: function isBrowser(query) {\n return compare(UserAgentData.browserName, UserAgentData.browserFullVersion, query);\n },\n\n /**\n * Check if the User Agent browser uses a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isBrowserArchitecture: function isBrowserArchitecture(query) {\n return compare(UserAgentData.browserArchitecture, null, query);\n },\n\n /**\n * Check if the User Agent device matches `query`.\n *\n * `query` should be a string like \"iPhone\" or \"iPad\".\n *\n * Valid device names include:\n *\n * - Kindle\n * - Kindle Fire\n * - Unknown\n * - iPad\n * - iPhone\n * - iPod\n * - etc...\n *\n * An authoritative list can be found in the PHP `DeviceDetector` class and\n * related classes in the same file (see calls to `new UserAgentDevice` here:\n * https://fburl.com/50728332).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name\"\n * @return {boolean}\n */\n isDevice: function isDevice(query) {\n return compare(UserAgentData.deviceName, null, query);\n },\n\n /**\n * Check if the User Agent rendering engine matches `query`.\n *\n * `query` should be a string like \"WebKit\" or \"WebKit >= 537\".\n *\n * Valid engine names include:\n *\n * - Gecko\n * - Presto\n * - Trident\n * - WebKit\n * - etc...\n *\n * An authoritative list can be found in the PHP `RenderingEngineDetector`\n * class related classes in the same file (see calls to `new\n * UserAgentRenderingEngine` here: https://fburl.com/50728617).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isEngine: function isEngine(query) {\n return compare(UserAgentData.engineName, UserAgentData.engineVersion, query);\n },\n\n /**\n * Check if the User Agent platform matches `query`.\n *\n * `query` should be a string like \"Windows\" or \"iOS 5 - 6\".\n *\n * Valid platform names include:\n *\n * - Android\n * - BlackBerry OS\n * - Java ME\n * - Linux\n * - Mac OS X\n * - Mac OS X Calendar\n * - Mac OS X Internet Account\n * - Symbian\n * - SymbianOS\n * - Windows\n * - Windows Mobile\n * - Windows Phone\n * - iOS\n * - iOS Facebook Integration Account\n * - iOS Facebook Social Sharing UI\n * - webOS\n * - Chrome OS\n * - etc...\n *\n * An authoritative list can be found in the PHP `PlatformDetector` class and\n * related classes in the same file (see calls to `new UserAgentPlatform`\n * here: https://fburl.com/50729226).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isPlatform: function isPlatform(query) {\n return compare(UserAgentData.platformName, UserAgentData.platformFullVersion, query, normalizePlatformVersion);\n },\n\n /**\n * Check if the User Agent platform is a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isPlatformArchitecture: function isPlatformArchitecture(query) {\n return compare(UserAgentData.platformArchitecture, null, query);\n }\n};\nmodule.exports = mapObject(UserAgent, memoizeStringOnly);","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar _require = require(\"immutable\"),\n Map = _require.Map,\n OrderedSet = _require.OrderedSet,\n Record = _require.Record; // Immutable.map is typed such that the value for every key in the map\n// must be the same type\n\n\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n style: EMPTY_SET,\n entity: null\n};\nvar CharacterMetadataRecord = Record(defaultRecord);\n\nvar CharacterMetadata =\n/*#__PURE__*/\nfunction (_CharacterMetadataRec) {\n _inheritsLoose(CharacterMetadata, _CharacterMetadataRec);\n\n function CharacterMetadata() {\n return _CharacterMetadataRec.apply(this, arguments) || this;\n }\n\n var _proto = CharacterMetadata.prototype;\n\n _proto.getStyle = function getStyle() {\n return this.get('style');\n };\n\n _proto.getEntity = function getEntity() {\n return this.get('entity');\n };\n\n _proto.hasStyle = function hasStyle(style) {\n return this.getStyle().includes(style);\n };\n\n CharacterMetadata.applyStyle = function applyStyle(record, style) {\n var withStyle = record.set('style', record.getStyle().add(style));\n return CharacterMetadata.create(withStyle);\n };\n\n CharacterMetadata.removeStyle = function removeStyle(record, style) {\n var withoutStyle = record.set('style', record.getStyle().remove(style));\n return CharacterMetadata.create(withoutStyle);\n };\n\n CharacterMetadata.applyEntity = function applyEntity(record, entityKey) {\n var withEntity = record.getEntity() === entityKey ? record : record.set('entity', entityKey);\n return CharacterMetadata.create(withEntity);\n }\n /**\n * Use this function instead of the `CharacterMetadata` constructor.\n * Since most content generally uses only a very small number of\n * style/entity permutations, we can reuse these objects as often as\n * possible.\n */\n ;\n\n CharacterMetadata.create = function create(config) {\n if (!config) {\n return EMPTY;\n }\n\n var defaultConfig = {\n style: EMPTY_SET,\n entity: null\n }; // Fill in unspecified properties, if necessary.\n\n var configMap = Map(defaultConfig).merge(config);\n var existing = pool.get(configMap);\n\n if (existing) {\n return existing;\n }\n\n var newCharacter = new CharacterMetadata(configMap);\n pool = pool.set(configMap, newCharacter);\n return newCharacter;\n };\n\n CharacterMetadata.fromJS = function fromJS(_ref) {\n var style = _ref.style,\n entity = _ref.entity;\n return new CharacterMetadata({\n style: Array.isArray(style) ? OrderedSet(style) : style,\n entity: Array.isArray(entity) ? OrderedSet(entity) : entity\n });\n };\n\n return CharacterMetadata;\n}(CharacterMetadataRecord);\n\nvar EMPTY = new CharacterMetadata();\nvar pool = Map([[Map(defaultRecord), EMPTY]]);\nCharacterMetadata.EMPTY = EMPTY;\nmodule.exports = CharacterMetadata;","/**\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 * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of ContentBlock adding support for nesting references by\n * providing links to children, parent, prevSibling, and nextSibling.\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n parent: null,\n characterList: List(),\n data: Map(),\n depth: 0,\n key: '',\n text: '',\n type: 'unstyled',\n children: List(),\n prevSibling: null,\n nextSibling: null\n};\n\nvar haveEqualStyle = function haveEqualStyle(charA, charB) {\n return charA.getStyle() === charB.getStyle();\n};\n\nvar haveEqualEntity = function haveEqualEntity(charA, charB) {\n return charA.getEntity() === charB.getEntity();\n};\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n if (!config) {\n return config;\n }\n\n var characterList = config.characterList,\n text = config.text;\n\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlockNode =\n/*#__PURE__*/\nfunction (_ref) {\n _inheritsLoose(ContentBlockNode, _ref);\n\n function ContentBlockNode() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRecord;\n\n /* eslint-disable-next-line constructor-super */\n return _ref.call(this, decorateCharacterList(props)) || this;\n }\n\n var _proto = ContentBlockNode.prototype;\n\n _proto.getKey = function getKey() {\n return this.get('key');\n };\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getText = function getText() {\n return this.get('text');\n };\n\n _proto.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n _proto.getLength = function getLength() {\n return this.getText().length;\n };\n\n _proto.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n _proto.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n };\n\n _proto.getChildKeys = function getChildKeys() {\n return this.get('children');\n };\n\n _proto.getParentKey = function getParentKey() {\n return this.get('parent');\n };\n\n _proto.getPrevSiblingKey = function getPrevSiblingKey() {\n return this.get('prevSibling');\n };\n\n _proto.getNextSiblingKey = function getNextSiblingKey() {\n return this.get('nextSibling');\n };\n\n _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n };\n\n _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n };\n\n return ContentBlockNode;\n}(Record(defaultRecord));\n\nmodule.exports = ContentBlockNode;","// TODO v5: consider to make it private\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: The value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nexport function hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length >= 6 ? 2 : 1, \"}\"), 'g');\n var colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n\n return colors ? \"rgb\".concat(colors.length === 4 ? 'a' : '', \"(\").concat(colors.map(function (n, index) {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', '), \")\") : '';\n}\n\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\n\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Unsupported `\".concat(color, \"` color.\\nWe support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().\") : _formatMuiErrorMessage(3, color));\n }\n\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\nexport function recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\nexport function getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\nexport function getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function fade(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}","module.exports = require('./lib/axios');","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar seenKeys = {};\nvar MULTIPLIER = Math.pow(2, 24);\n\nfunction generateRandomKey() {\n var key;\n\n while (key === undefined || seenKeys.hasOwnProperty(key) || !isNaN(+key)) {\n key = Math.floor(Math.random() * MULTIPLIER).toString(32);\n }\n\n seenKeys[key] = true;\n return key;\n}\n\nmodule.exports = generateRandomKey;","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;","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 return Constructor;\n}\n\nmodule.exports = _createClass;","import { useTheme as useThemeWithoutDefault } from '@material-ui/styles';\nimport React from 'react';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n var theme = useThemeWithoutDefault() || defaultTheme;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_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}","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar FormControlContext = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\n\nexport function useFormControl() {\n return React.useContext(FormControlContext);\n}\nexport default FormControlContext;","import * as React from 'react';\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\n\nexport default function useEventCallback(fn) {\n var ref = React.useRef(fn);\n useEnhancedEffect(function () {\n ref.current = fn;\n });\n return React.useCallback(function () {\n return (0, ref.current).apply(void 0, arguments);\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","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KEY_DELIMITER = '-';\nvar DraftOffsetKey = {\n encode: function encode(blockKey, decoratorKey, leafKey) {\n return blockKey + KEY_DELIMITER + decoratorKey + KEY_DELIMITER + leafKey;\n },\n decode: function decode(offsetKey) {\n // Extracts the last two parts of offsetKey and captures the rest in blockKeyParts\n var _offsetKey$split$reve = offsetKey.split(KEY_DELIMITER).reverse(),\n leafKey = _offsetKey$split$reve[0],\n decoratorKey = _offsetKey$split$reve[1],\n blockKeyParts = _offsetKey$split$reve.slice(2);\n\n return {\n // Recomposes the parts of blockKey after reversing them\n blockKey: blockKeyParts.reverse().join(KEY_DELIMITER),\n decoratorKey: parseInt(decoratorKey, 10),\n leafKey: parseInt(leafKey, 10)\n };\n }\n};\nmodule.exports = DraftOffsetKey;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _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 if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createSvgIcon;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _SvgIcon = _interopRequireDefault(require(\"@material-ui/core/SvgIcon\"));\n\nfunction createSvgIcon(path, displayName) {\n var Component = _react.default.memo(_react.default.forwardRef(function (props, ref) {\n return _react.default.createElement(_SvgIcon.default, (0, _extends2.default)({\n ref: ref\n }, props), path);\n }));\n\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = _SvgIcon.default.muiName;\n return Component;\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 * @format\n * \n */\n'use strict';\n\nmodule.exports = function (name) {\n if (typeof window !== 'undefined' && window.__DRAFT_GKX) {\n return !!window.__DRAFT_GKX[name];\n }\n\n return false;\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}","import { deepmerge } from '@material-ui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport var keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexport default function createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n } : _breakpoints$values,\n _breakpoints$unit = breakpoints.unit,\n unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n _breakpoints$step = breakpoints.step,\n step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n other = _objectWithoutProperties(breakpoints, [\"values\", \"unit\", \"step\"]);\n\n function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n }\n\n function down(key) {\n var endIndex = keys.indexOf(key) + 1;\n var upperbound = values[keys[endIndex]];\n\n if (endIndex === keys.length) {\n // xl down applies to all sizes\n return up('xs');\n }\n\n var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n }\n\n function between(start, end) {\n var endIndex = keys.indexOf(end);\n\n if (endIndex === keys.length - 1) {\n return up(start);\n }\n\n return \"@media (min-width:\".concat(typeof values[start] === 'number' ? values[start] : start).concat(unit, \") and \") + \"(max-width:\".concat((endIndex !== -1 && typeof values[keys[endIndex + 1]] === 'number' ? values[keys[endIndex + 1]] : end) - step / 100).concat(unit, \")\");\n }\n\n function only(key) {\n return between(key, key);\n }\n\n function width(key) {\n return values[key];\n }\n\n return _extends({\n keys: keys,\n values: values,\n up: up,\n down: down,\n between: between,\n only: only,\n width: width\n }, other);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, spacing, mixins) {\n var _toolbar;\n\n return _extends({\n gutters: function gutters() {\n var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // To deprecate in v4.1\n // warning(\n // false,\n // [\n // 'Material-UI: Theme.mixins.gutters() is deprecated.',\n // 'You can use the source of the mixin directly:',\n // `\n // paddingLeft: theme.spacing(2),\n // paddingRight: theme.spacing(2),\n // [theme.breakpoints.up('sm')]: {\n // paddingLeft: theme.spacing(3),\n // paddingRight: theme.spacing(3),\n // },\n // `,\n // ].join('\\n'),\n // );\n return _extends({\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n }, styles, _defineProperty({}, breakpoints.up('sm'), _extends({\n paddingLeft: spacing(3),\n paddingRight: spacing(3)\n }, styles[breakpoints.up('sm')])));\n },\n toolbar: (_toolbar = {\n minHeight: 56\n }, _defineProperty(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n minHeight: 48\n }), _defineProperty(_toolbar, breakpoints.up('sm'), {\n minHeight: 64\n }), _toolbar)\n }, mixins);\n}","var common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","var grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nexport default grey;","var indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nexport default indigo;","var pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nexport default pink;","var red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","var orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","var blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","var green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport { deepmerge } from '@material-ui/utils';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport indigo from '../colors/indigo';\nimport pink from '../colors/pink';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport green from '../colors/green';\nimport { darken, getContrastRatio, lighten } from './colorManipulator';\nexport var light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.54)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)',\n // Text hints.\n hint: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: grey[50]\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport var dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n hint: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: grey[800],\n default: '#303030'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n var tonalOffsetLight = tonalOffset.light || tonalOffset;\n var tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\n\nexport default function createPalette(palette) {\n var _palette$primary = palette.primary,\n primary = _palette$primary === void 0 ? {\n light: indigo[300],\n main: indigo[500],\n dark: indigo[700]\n } : _palette$primary,\n _palette$secondary = palette.secondary,\n secondary = _palette$secondary === void 0 ? {\n light: pink.A200,\n main: pink.A400,\n dark: pink.A700\n } : _palette$secondary,\n _palette$error = palette.error,\n error = _palette$error === void 0 ? {\n light: red[300],\n main: red[500],\n dark: red[700]\n } : _palette$error,\n _palette$warning = palette.warning,\n warning = _palette$warning === void 0 ? {\n light: orange[300],\n main: orange[500],\n dark: orange[700]\n } : _palette$warning,\n _palette$info = palette.info,\n info = _palette$info === void 0 ? {\n light: blue[300],\n main: blue[500],\n dark: blue[700]\n } : _palette$info,\n _palette$success = palette.success,\n success = _palette$success === void 0 ? {\n light: green[300],\n main: green[500],\n dark: green[700]\n } : _palette$success,\n _palette$type = palette.type,\n type = _palette$type === void 0 ? 'light' : _palette$type,\n _palette$contrastThre = palette.contrastThreshold,\n contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n _palette$tonalOffset = palette.tonalOffset,\n tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n other = _objectWithoutProperties(palette, [\"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\", \"type\", \"contrastThreshold\", \"tonalOffset\"]); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n\n function getContrastText(background) {\n var contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n if (process.env.NODE_ENV !== 'production') {\n var contrast = getContrastRatio(background, contrastText);\n\n if (contrast < 3) {\n console.error([\"Material-UI: The contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n\n return contrastText;\n }\n\n var augmentColor = function augmentColor(color) {\n var mainShade = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var lightShade = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var darkShade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 700;\n color = _extends({}, color);\n\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n\n if (!color.main) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\nThe color object needs to have a `main` property or a `\".concat(mainShade, \"` property.\") : _formatMuiErrorMessage(4, mainShade));\n }\n\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\n`color.main` should be a string, but `\".concat(JSON.stringify(color.main), \"` was provided instead.\\n\\nDid you intend to use one of the following approaches?\\n\\nimport {\\xA0green } from \\\"@material-ui/core/colors\\\";\\n\\nconst theme1 = createMuiTheme({ palette: {\\n primary: green,\\n} });\\n\\nconst theme2 = createMuiTheme({ palette: {\\n primary: { main: green[500] },\\n} });\") : _formatMuiErrorMessage(5, JSON.stringify(color.main)));\n }\n\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n\n return color;\n };\n\n var types = {\n dark: dark,\n light: light\n };\n\n if (process.env.NODE_ENV !== 'production') {\n if (!types[type]) {\n console.error(\"Material-UI: The palette type `\".concat(type, \"` is not supported.\"));\n }\n }\n\n var paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: common,\n // The palette type, can be light or dark.\n type: type,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor(primary),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor(secondary, 'A400', 'A200', 'A700'),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor(error),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor(warning),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor(info),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor(success),\n // The grey colors.\n grey: grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold: contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText: getContrastText,\n // Generate a rich color object.\n augmentColor: augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: tonalOffset\n }, types[type]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\n\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\n\nvar caseAllCaps = {\n textTransform: 'uppercase'\n};\nvar defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nexport default function createTypography(palette, typography) {\n var _ref = typeof typography === 'function' ? typography(palette) : typography,\n _ref$fontFamily = _ref.fontFamily,\n fontFamily = _ref$fontFamily === void 0 ? defaultFontFamily : _ref$fontFamily,\n _ref$fontSize = _ref.fontSize,\n fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n _ref$fontWeightLight = _ref.fontWeightLight,\n fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n _ref$fontWeightRegula = _ref.fontWeightRegular,\n fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n _ref$fontWeightMedium = _ref.fontWeightMedium,\n fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n _ref$fontWeightBold = _ref.fontWeightBold,\n fontWeightBold = _ref$fontWeightBold === void 0 ? 700 : _ref$fontWeightBold,\n _ref$htmlFontSize = _ref.htmlFontSize,\n htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n allVariants = _ref.allVariants,\n pxToRem2 = _ref.pxToRem,\n other = _objectWithoutProperties(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('Material-UI: `fontSize` is required to be a number.');\n }\n\n if (typeof htmlFontSize !== 'number') {\n console.error('Material-UI: `htmlFontSize` is required to be a number.');\n }\n }\n\n var coef = fontSize / 14;\n\n var pxToRem = pxToRem2 || function (size) {\n return \"\".concat(size / htmlFontSize * coef, \"rem\");\n };\n\n var buildVariant = function buildVariant(fontWeight, size, lineHeight, letterSpacing, casing) {\n return _extends({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight: lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: \"\".concat(round(letterSpacing / size), \"em\")\n } : {}, casing, allVariants);\n };\n\n var variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return deepmerge(_extends({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n round: round,\n // TODO v5: remove\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n\n });\n}","var shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow() {\n return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0,0,0,\").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0,0,0,\").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0,0,0,\").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\n\nvar shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","var shape = {\n borderRadius: 4\n};\nexport default shape;","import { createUnarySpacing } from '@material-ui/system';\nvar warnOnce;\nexport default function createSpacing() {\n var spacingInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8;\n\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid applied, which aligns both spacing and the overall layout.\n // Smaller components, such as icons and type, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n\n var transform = createUnarySpacing({\n spacing: spacingInput\n });\n\n var spacing = function spacing() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(args.length <= 4)) {\n console.error(\"Material-UI: Too many arguments provided, expected between 0 and 4, got \".concat(args.length));\n }\n }\n\n if (args.length === 0) {\n return transform(1);\n }\n\n if (args.length === 1) {\n return transform(args[0]);\n }\n\n return args.map(function (argument) {\n if (typeof argument === 'string') {\n return argument;\n }\n\n var output = transform(argument);\n return typeof output === 'number' ? \"\".concat(output, \"px\") : output;\n }).join(' ');\n }; // Backward compatibility, to remove in v5.\n\n\n Object.defineProperty(spacing, 'unit', {\n get: function get() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnOnce || process.env.NODE_ENV === 'test') {\n console.error(['Material-UI: theme.spacing.unit usage has been deprecated.', 'It will be removed in v5.', 'You can replace `theme.spacing.unit * y` with `theme.spacing(y)`.', '', 'You can use the `https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod/README.md#theme-spacing-api` migration helper to make the process smoother.'].join('\\n'));\n }\n\n warnOnce = true;\n }\n\n return spacingInput;\n }\n });\n spacing.mui = true;\n return spacing;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport transitions from './transitions';\nimport zIndex from './zIndex';\n\nfunction createMuiTheme() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _options$breakpoints = options.breakpoints,\n breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n _options$mixins = options.mixins,\n mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n _options$palette = options.palette,\n paletteInput = _options$palette === void 0 ? {} : _options$palette,\n spacingInput = options.spacing,\n _options$typography = options.typography,\n typographyInput = _options$typography === void 0 ? {} : _options$typography,\n other = _objectWithoutProperties(options, [\"breakpoints\", \"mixins\", \"palette\", \"spacing\", \"typography\"]);\n\n var palette = createPalette(paletteInput);\n var breakpoints = createBreakpoints(breakpointsInput);\n var spacing = createSpacing(spacingInput);\n var muiTheme = deepmerge({\n breakpoints: breakpoints,\n direction: 'ltr',\n mixins: createMixins(breakpoints, spacing, mixinsInput),\n overrides: {},\n // Inject custom styles\n palette: palette,\n props: {},\n // Provide default props\n shadows: shadows,\n typography: createTypography(palette, typographyInput),\n spacing: spacing,\n shape: shape,\n transitions: transitions,\n zIndex: zIndex\n }, other);\n\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 muiTheme = args.reduce(function (acc, argument) {\n return deepmerge(acc, argument);\n }, muiTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected'];\n\n var traverse = function traverse(node, parentKey) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n var child = node[key];\n\n if (depth === 1) {\n if (key.indexOf('Mui') === 0 && child) {\n traverse(child, key, depth + 1);\n }\n } else if (pseudoClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `\".concat(parentKey, \"` component increases \") + \"the CSS specificity of the `\".concat(key, \"` internal state.\"), 'You can not override it like this: ', JSON.stringify(node, null, 2), '', 'Instead, you need to use the $ruleName syntax:', JSON.stringify({\n root: _defineProperty({}, \"&$\".concat(key), child)\n }, null, 2), '', 'https://material-ui.com/r/pseudo-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n\n node[key] = {};\n }\n }\n };\n\n traverse(muiTheme.overrides);\n }\n\n return muiTheme;\n}\n\nexport default createMuiTheme;","import createMuiTheme from './createMuiTheme';\nvar defaultTheme = createMuiTheme();\nexport default defaultTheme;","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (acc, func) {\n if (func == null) {\n return acc;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof func !== 'function') {\n console.error('Material-UI: Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n }\n\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, function () {});\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n key: '',\n type: 'unstyled',\n text: '',\n characterList: List(),\n depth: 0,\n data: Map()\n};\nvar ContentBlockRecord = Record(defaultRecord);\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n if (!config) {\n return config;\n }\n\n var characterList = config.characterList,\n text = config.text;\n\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlock =\n/*#__PURE__*/\nfunction (_ContentBlockRecord) {\n _inheritsLoose(ContentBlock, _ContentBlockRecord);\n\n function ContentBlock(config) {\n return _ContentBlockRecord.call(this, decorateCharacterList(config)) || this;\n }\n\n var _proto = ContentBlock.prototype;\n\n _proto.getKey = function getKey() {\n return this.get('key');\n };\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getText = function getText() {\n return this.get('text');\n };\n\n _proto.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n _proto.getLength = function getLength() {\n return this.getText().length;\n };\n\n _proto.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n _proto.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n }\n /**\n * Execute a callback for every contiguous range of styles within the block.\n */\n ;\n\n _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n }\n /**\n * Execute a callback for every contiguous range of entities within the block.\n */\n ;\n\n _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n };\n\n return ContentBlock;\n}(ContentBlockRecord);\n\nfunction haveEqualStyle(charA, charB) {\n return charA.getStyle() === charB.getStyle();\n}\n\nfunction haveEqualEntity(charA, charB) {\n return charA.getEntity() === charB.getEntity();\n}\n\nmodule.exports = ContentBlock;","\"use strict\";\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\n/**\n * This function is used to mark string literals representing CSS class names\n * so that they can be transformed statically. This allows for modularization\n * and minification of CSS class names.\n *\n * In static_upstream, this function is actually implemented, but it should\n * eventually be replaced with something more descriptive, and the transform\n * that is used in the main stack should be ported for use elsewhere.\n *\n * @param string|object className to modularize, or an object of key/values.\n * In the object case, the values are conditions that\n * determine if the className keys should be included.\n * @param [string ...] Variable list of classNames in the string case.\n * @return string Renderable space-separated CSS className.\n */\nfunction cx(classNames) {\n if (typeof classNames == 'object') {\n return Object.keys(classNames).filter(function (className) {\n return classNames[className];\n }).map(replace).join(' ');\n }\n\n return Array.prototype.map.call(arguments, replace).join(' ');\n}\n\nfunction replace(str) {\n return str.replace(/\\//g, '-');\n}\n\nmodule.exports = cx;","\"use strict\";\n\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 * @format\n * \n * @emails oncall+draft_js\n */\nfunction isElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n}\n\nmodule.exports = isElement;","/**\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 * @typechecks\n */\n\n/**\n * Unicode-enabled replacesments for basic String functions.\n *\n * All the functions in this module assume that the input string is a valid\n * UTF-16 encoding of a Unicode sequence. If it's not the case, the behavior\n * will be undefined.\n *\n * WARNING: Since this module is typechecks-enforced, you may find new bugs\n * when replacing normal String functions with ones provided here.\n */\n'use strict';\n\nvar invariant = require(\"./invariant\"); // These two ranges are consecutive so anything in [HIGH_START, LOW_END] is a\n// surrogate code unit.\n\n\nvar SURROGATE_HIGH_START = 0xD800;\nvar SURROGATE_HIGH_END = 0xDBFF;\nvar SURROGATE_LOW_START = 0xDC00;\nvar SURROGATE_LOW_END = 0xDFFF;\nvar SURROGATE_UNITS_REGEX = /[\\uD800-\\uDFFF]/;\n/**\n * @param {number} codeUnit A Unicode code-unit, in range [0, 0x10FFFF]\n * @return {boolean} Whether code-unit is in a surrogate (hi/low) range\n */\n\nfunction isCodeUnitInSurrogateRange(codeUnit) {\n return SURROGATE_HIGH_START <= codeUnit && codeUnit <= SURROGATE_LOW_END;\n}\n/**\n * Returns whether the two characters starting at `index` form a surrogate pair.\n * For example, given the string s = \"\\uD83D\\uDE0A\", (s, 0) returns true and\n * (s, 1) returns false.\n *\n * @param {string} str\n * @param {number} index\n * @return {boolean}\n */\n\n\nfunction isSurrogatePair(str, index) {\n !(0 <= index && index < str.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isSurrogatePair: Invalid index %s for string length %s.', index, str.length) : invariant(false) : void 0;\n\n if (index + 1 === str.length) {\n return false;\n }\n\n var first = str.charCodeAt(index);\n var second = str.charCodeAt(index + 1);\n return SURROGATE_HIGH_START <= first && first <= SURROGATE_HIGH_END && SURROGATE_LOW_START <= second && second <= SURROGATE_LOW_END;\n}\n/**\n * @param {string} str Non-empty string\n * @return {boolean} True if the input includes any surrogate code units\n */\n\n\nfunction hasSurrogateUnit(str) {\n return SURROGATE_UNITS_REGEX.test(str);\n}\n/**\n * Return the length of the original Unicode character at given position in the\n * String by looking into the UTF-16 code unit; that is equal to 1 for any\n * non-surrogate characters in BMP ([U+0000..U+D7FF] and [U+E000, U+FFFF]); and\n * returns 2 for the hi/low surrogates ([U+D800..U+DFFF]), which are in fact\n * representing non-BMP characters ([U+10000..U+10FFFF]).\n *\n * Examples:\n * - '\\u0020' => 1\n * - '\\u3020' => 1\n * - '\\uD835' => 2\n * - '\\uD835\\uDDEF' => 2\n * - '\\uDDEF' => 2\n *\n * @param {string} str Non-empty string\n * @param {number} pos Position in the string to look for one code unit\n * @return {number} Number 1 or 2\n */\n\n\nfunction getUTF16Length(str, pos) {\n return 1 + isCodeUnitInSurrogateRange(str.charCodeAt(pos));\n}\n/**\n * Fully Unicode-enabled replacement for String#length\n *\n * @param {string} str Valid Unicode string\n * @return {number} The number of Unicode characters in the string\n */\n\n\nfunction strlen(str) {\n // Call the native functions if there's no surrogate char\n if (!hasSurrogateUnit(str)) {\n return str.length;\n }\n\n var len = 0;\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n len++;\n }\n\n return len;\n}\n/**\n * Fully Unicode-enabled replacement for String#substr()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} length The number of Unicode characters to extract\n * (default: to the end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substr(str, start, length) {\n start = start || 0;\n length = length === undefined ? Infinity : length || 0; // Call the native functions if there's no surrogate char\n\n if (!hasSurrogateUnit(str)) {\n return str.substr(start, length);\n } // Obvious cases\n\n\n var size = str.length;\n\n if (size <= 0 || start > size || length <= 0) {\n return '';\n } // Find the actual starting position\n\n\n var posA = 0;\n\n if (start > 0) {\n for (; start > 0 && posA < size; start--) {\n posA += getUTF16Length(str, posA);\n }\n\n if (posA >= size) {\n return '';\n }\n } else if (start < 0) {\n for (posA = size; start < 0 && 0 < posA; start++) {\n posA -= getUTF16Length(str, posA - 1);\n }\n\n if (posA < 0) {\n posA = 0;\n }\n } // Find the actual ending position\n\n\n var posB = size;\n\n if (length < size) {\n for (posB = posA; length > 0 && posB < size; length--) {\n posB += getUTF16Length(str, posB);\n }\n }\n\n return str.substring(posA, posB);\n}\n/**\n * Fully Unicode-enabled replacement for String#substring()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} end Location in Unicode sequence to end extracting\n * (default: end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substring(str, start, end) {\n start = start || 0;\n end = end === undefined ? Infinity : end || 0;\n\n if (start < 0) {\n start = 0;\n }\n\n if (end < 0) {\n end = 0;\n }\n\n var length = Math.abs(end - start);\n start = start < end ? start : end;\n return substr(str, start, length);\n}\n/**\n * Get a list of Unicode code-points from a String\n *\n * @param {string} str Valid Unicode string\n * @return {array} A list of code-points in [0..0x10FFFF]\n */\n\n\nfunction getCodePoints(str) {\n var codePoints = [];\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n codePoints.push(str.codePointAt(pos));\n }\n\n return codePoints;\n}\n\nvar UnicodeUtils = {\n getCodePoints: getCodePoints,\n getUTF16Length: getUTF16Length,\n hasSurrogateUnit: hasSurrogateUnit,\n isCodeUnitInSurrogateRange: isCodeUnitInSurrogateRange,\n isSurrogatePair: isSurrogatePair,\n strlen: strlen,\n substring: substring,\n substr: substr\n};\nmodule.exports = UnicodeUtils;","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}\n\nmodule.exports = _assertThisInitialized;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getData = getData;\nexports.getEmojiDataFromNative = getEmojiDataFromNative;\nexports.getSanitizedData = getSanitizedData;\nexports.uniq = uniq;\nexports.intersect = intersect;\nexports.deepMerge = deepMerge;\nexports.unifiedToNative = unifiedToNative;\nexports.measureScrollbar = measureScrollbar;\nexports.throttleIdleTask = throttleIdleTask;\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _data = require(\"./data\");\n\nvar _stringFromCodePoint = _interopRequireDefault(require(\"../polyfills/stringFromCodePoint\"));\n\nvar COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/;\nvar SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map(function (u) {\n return \"0x\".concat(u);\n });\n return _stringFromCodePoint[\"default\"].apply(null, codePoints);\n}\n\nfunction sanitize(emoji) {\n var name = emoji.name,\n short_names = emoji.short_names,\n skin_tone = emoji.skin_tone,\n skin_variations = emoji.skin_variations,\n emoticons = emoji.emoticons,\n unified = emoji.unified,\n custom = emoji.custom,\n customCategory = emoji.customCategory,\n imageUrl = emoji.imageUrl,\n id = emoji.id || short_names[0],\n colons = \":\".concat(id, \":\");\n\n if (custom) {\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n custom: custom,\n customCategory: customCategory,\n imageUrl: imageUrl\n };\n }\n\n if (skin_tone) {\n colons += \":skin-tone-\".concat(skin_tone, \":\");\n }\n\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n \"native\": unifiedToNative(unified)\n };\n}\n\nfunction getSanitizedData() {\n return sanitize(getData.apply(void 0, arguments));\n}\n\nfunction getData(emoji, skin, set, data) {\n var emojiData = {};\n\n if (typeof emoji == 'string') {\n var matches = emoji.match(COLONS_REGEX);\n\n if (matches) {\n emoji = matches[1];\n\n if (matches[2]) {\n skin = parseInt(matches[2], 10);\n }\n }\n\n if (data.aliases.hasOwnProperty(emoji)) {\n emoji = data.aliases[emoji];\n }\n\n if (data.emojis.hasOwnProperty(emoji)) {\n emojiData = data.emojis[emoji];\n } else {\n return null;\n }\n } else if (emoji.id) {\n if (data.aliases.hasOwnProperty(emoji.id)) {\n emoji.id = data.aliases[emoji.id];\n }\n\n if (data.emojis.hasOwnProperty(emoji.id)) {\n emojiData = data.emojis[emoji.id];\n skin || (skin = emoji.skin);\n }\n }\n\n if (!Object.keys(emojiData).length) {\n emojiData = emoji;\n emojiData.custom = true;\n\n if (!emojiData.search) {\n emojiData.search = (0, _data.buildSearch)(emoji);\n }\n }\n\n emojiData.emoticons || (emojiData.emoticons = []);\n emojiData.variations || (emojiData.variations = []);\n\n if (emojiData.skin_variations && skin > 1) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n var skinKey = SKINS[skin - 1],\n variationData = emojiData.skin_variations[skinKey];\n\n if (variationData) {\n if (!variationData.variations && emojiData.variations) {\n delete emojiData.variations;\n }\n\n if (set && (variationData[\"has_img_\".concat(set)] == undefined || variationData[\"has_img_\".concat(set)]) || !set) {\n emojiData.skin_tone = skin;\n\n for (var k in variationData) {\n var v = variationData[k];\n emojiData[k] = v;\n }\n }\n }\n }\n\n if (emojiData.variations && emojiData.variations.length) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n emojiData.unified = emojiData.variations.shift();\n }\n\n return emojiData;\n}\n\nfunction getEmojiDataFromNative(nativeString, set, data) {\n if (data.compressed) {\n (0, _data.uncompress)(data);\n }\n\n var skinTones = ['🏻', '🏼', '🏽', '🏾', '🏿'];\n var skinCodes = ['1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n var skin;\n var skinCode;\n var baseNativeString = nativeString;\n skinTones.forEach(function (skinTone, skinToneIndex) {\n if (nativeString.indexOf(skinTone) > 0) {\n skin = skinToneIndex + 2;\n skinCode = skinCodes[skinToneIndex];\n }\n });\n var emojiData;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n var emojiUnified = emoji.unified;\n\n if (emoji.variations && emoji.variations.length) {\n emojiUnified = emoji.variations.shift();\n }\n\n if (skin && emoji.skin_variations && emoji.skin_variations[skinCode]) {\n emojiUnified = emoji.skin_variations[skinCode].unified;\n }\n\n if (unifiedToNative(emojiUnified) === baseNativeString) emojiData = emoji;\n }\n\n if (!emojiData) {\n return null;\n }\n\n emojiData.id = emojiData.short_names[0];\n return getSanitizedData(emojiData, skin, set, data);\n}\n\nfunction uniq(arr) {\n return arr.reduce(function (acc, item) {\n if (acc.indexOf(item) === -1) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n}\n\nfunction intersect(a, b) {\n var uniqA = uniq(a);\n var uniqB = uniq(b);\n return uniqA.filter(function (item) {\n return uniqB.indexOf(item) >= 0;\n });\n}\n\nfunction deepMerge(a, b) {\n var o = {};\n\n for (var key in a) {\n var originalValue = a[key],\n value = originalValue;\n\n if (b.hasOwnProperty(key)) {\n value = b[key];\n }\n\n if ((0, _typeof2[\"default\"])(value) === 'object') {\n value = deepMerge(originalValue, value);\n }\n\n o[key] = value;\n }\n\n return o;\n} // https://github.com/sonicdoe/measure-scrollbar\n\n\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0;\n var div = document.createElement('div');\n div.style.width = '100px';\n div.style.height = '100px';\n div.style.overflow = 'scroll';\n div.style.position = 'absolute';\n div.style.top = '-9999px';\n document.body.appendChild(div);\n var scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n} // Use requestIdleCallback() if available, else fall back to setTimeout().\n// Throttle so as not to run too frequently.\n\n\nfunction throttleIdleTask(func) {\n var doIdleTask = typeof requestIdleCallback === 'function' ? requestIdleCallback : setTimeout;\n var running = false;\n return function throttled() {\n if (running) {\n return;\n }\n\n running = true;\n doIdleTask(function () {\n running = false;\n func();\n });\n };\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","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\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","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export var reflow = function reflow(node) {\n return node.scrollTop;\n};\nexport function getTransitionProps(props, options) {\n var timeout = props.timeout,\n _props$style = props.style,\n style = _props$style === void 0 ? {} : _props$style;\n return {\n duration: style.transitionDuration || typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n delay: style.transitionDelay\n };\n}","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","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 return Constructor;\n}","// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nvar hadKeyboardEvent = true;\nvar hadFocusVisibleRecently = false;\nvar hadFocusVisibleRecentlyTimeout = null;\nvar inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @return {boolean}\n */\n\nfunction focusTriggersKeyboardModality(node) {\n var type = node.type,\n tagName = node.tagName;\n\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n\n if (node.isContentEditable) {\n return true;\n }\n\n return false;\n}\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\n\n\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n\n hadKeyboardEvent = true;\n}\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\n\n\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\n\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\n\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nfunction isFocusVisible(event) {\n var target = event.target;\n\n try {\n return target.matches(':focus-visible');\n } catch (error) {// browsers not implementing :focus-visible will throw a SyntaxError\n // we use our own heuristic for those browsers\n // rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n } // no need for validFocusTarget check. the user does that by attaching it to\n // focusable events only\n\n\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n/**\n * Should be called if a blur event is fired on a focus-visible element\n */\n\n\nfunction handleBlurVisible() {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {\n hadFocusVisibleRecently = false;\n }, 100);\n}\n\nexport default function useIsFocusVisible() {\n var ref = React.useCallback(function (instance) {\n var node = ReactDOM.findDOMNode(instance);\n\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(isFocusVisible);\n }\n\n return {\n isFocusVisible: isFocusVisible,\n onBlurVisible: handleBlurVisible,\n ref: ref\n };\n}","module.exports = require(\"regenerator-runtime\");\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n fill: 'currentColor',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(24),\n transition: theme.transitions.create('fill', {\n duration: theme.transitions.duration.shorter\n })\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"action\"`. */\n colorAction: {\n color: theme.palette.action.active\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `color=\"disabled\"`. */\n colorDisabled: {\n color: theme.palette.action.disabled\n },\n\n /* Styles applied to the root element if `fontSize=\"inherit\"`. */\n fontSizeInherit: {\n fontSize: 'inherit'\n },\n\n /* Styles applied to the root element if `fontSize=\"small\"`. */\n fontSizeSmall: {\n fontSize: theme.typography.pxToRem(20)\n },\n\n /* Styles applied to the root element if `fontSize=\"large\"`. */\n fontSizeLarge: {\n fontSize: theme.typography.pxToRem(35)\n }\n };\n};\nvar SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'inherit' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'svg' : _props$component,\n _props$fontSize = props.fontSize,\n fontSize = _props$fontSize === void 0 ? 'default' : _props$fontSize,\n htmlColor = props.htmlColor,\n titleAccess = props.titleAccess,\n _props$viewBox = props.viewBox,\n viewBox = _props$viewBox === void 0 ? '0 0 24 24' : _props$viewBox,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"titleAccess\", \"viewBox\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], fontSize !== 'default' && classes[\"fontSize\".concat(capitalize(fontSize))]),\n focusable: \"false\",\n viewBox: viewBox,\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, other), children, titleAccess ? /*#__PURE__*/React.createElement(\"title\", null, titleAccess) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n */\n color: PropTypes.oneOf(['action', 'disabled', 'error', 'inherit', 'primary', 'secondary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n */\n fontSize: PropTypes.oneOf(['default', 'inherit', 'large', 'small']),\n\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this property.\n */\n shapeRendering: PropTypes.string,\n\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default withStyles(styles, {\n name: 'MuiSvgIcon'\n})(SvgIcon);","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 return Constructor;\n}","import React from 'react';\nexport default React.createContext(null);","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar BlockMapBuilder = {\n createFromArray: function createFromArray(blocks) {\n return OrderedMap(blocks.map(function (block) {\n return [block.getKey(), block];\n }));\n }\n};\nmodule.exports = BlockMapBuilder;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Search through an array to find contiguous stretches of elements that\n * match a specified filter function.\n *\n * When ranges are found, execute a specified `found` function to supply\n * the values to the caller.\n */\nfunction findRangesImmutable(haystack, areEqualFn, filterFn, foundFn) {\n if (!haystack.size) {\n return;\n }\n\n var cursor = 0;\n haystack.reduce(function (value, nextValue, nextIndex) {\n if (!areEqualFn(value, nextValue)) {\n if (filterFn(value)) {\n foundFn(cursor, nextIndex);\n }\n\n cursor = nextIndex;\n }\n\n return nextValue;\n });\n filterFn(haystack.last()) && foundFn(cursor, haystack.count());\n}\n\nmodule.exports = findRangesImmutable;","\"use strict\";\n\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 * @format\n * \n * @emails oncall+draft_js\n */\nfunction isHTMLElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n if (!node.ownerDocument.defaultView) {\n return node instanceof HTMLElement;\n }\n\n if (node instanceof node.ownerDocument.defaultView.HTMLElement) {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isHTMLElement;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\n/**\n * For a collapsed selection state, remove text based on the specified strategy.\n * If the selection state is not collapsed, remove the entire selected range.\n */\n\nfunction removeTextWithStrategy(editorState, strategy, direction) {\n var selection = editorState.getSelection();\n var content = editorState.getCurrentContent();\n var target = selection;\n var anchorKey = selection.getAnchorKey();\n var focusKey = selection.getFocusKey();\n var anchorBlock = content.getBlockForKey(anchorKey);\n\n if (experimentalTreeDataSupport) {\n if (direction === 'forward') {\n if (anchorKey !== focusKey) {\n // For now we ignore forward delete across blocks,\n // if there is demand for this we will implement it.\n return content;\n }\n }\n }\n\n if (selection.isCollapsed()) {\n if (direction === 'forward') {\n if (editorState.isSelectionAtEndOfContent()) {\n return content;\n }\n\n if (experimentalTreeDataSupport) {\n var isAtEndOfBlock = selection.getAnchorOffset() === content.getBlockForKey(anchorKey).getLength();\n\n if (isAtEndOfBlock) {\n var anchorBlockSibling = content.getBlockForKey(anchorBlock.nextSibling);\n\n if (!anchorBlockSibling || anchorBlockSibling.getLength() === 0) {\n // For now we ignore forward delete at the end of a block,\n // if there is demand for this we will implement it.\n return content;\n }\n }\n }\n } else if (editorState.isSelectionAtStartOfContent()) {\n return content;\n }\n\n target = strategy(editorState);\n\n if (target === selection) {\n return content;\n }\n }\n\n return DraftModifier.removeRange(content, target, direction);\n}\n\nmodule.exports = removeTextWithStrategy;","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;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uncompress = exports.compress = exports.buildSearch = void 0;\nvar mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_facebook: 'h',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o'\n};\n\nvar buildSearch = function buildSearch(emoji) {\n var search = [];\n\n var addToSearch = function addToSearch(strings, split) {\n if (!strings) {\n return;\n }\n\n ;\n (Array.isArray(strings) ? strings : [strings]).forEach(function (string) {\n ;\n (split ? string.split(/[-|_|\\s]+/) : [string]).forEach(function (s) {\n s = s.toLowerCase();\n\n if (search.indexOf(s) == -1) {\n search.push(s);\n }\n });\n });\n };\n\n addToSearch(emoji.short_names, true);\n addToSearch(emoji.name, true);\n addToSearch(emoji.keywords, false);\n addToSearch(emoji.emoticons, false);\n return search.join(',');\n};\n\nexports.buildSearch = buildSearch;\n\nvar compress = function compress(emoji) {\n emoji.short_names = emoji.short_names.filter(function (short_name) {\n return short_name !== emoji.short_name;\n });\n delete emoji.short_name;\n emoji.sheet = [emoji.sheet_x, emoji.sheet_y];\n delete emoji.sheet_x;\n delete emoji.sheet_y;\n emoji.added_in = parseInt(emoji.added_in);\n\n if (emoji.added_in === 6) {\n delete emoji.added_in;\n }\n\n for (var key in mapping) {\n emoji[mapping[key]] = emoji[key];\n delete emoji[key];\n }\n\n for (var _key in emoji) {\n var value = emoji[_key];\n\n if (Array.isArray(value) && !value.length) {\n delete emoji[_key];\n } else if (typeof value === 'string' && !value.length) {\n delete emoji[_key];\n } else if (value === null) {\n delete emoji[_key];\n }\n }\n};\n\nexports.compress = compress;\n\nvar uncompress = function uncompress(data) {\n data.compressed = false;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n\n for (var key in mapping) {\n emoji[key] = emoji[mapping[key]];\n delete emoji[mapping[key]];\n }\n\n if (!emoji.short_names) emoji.short_names = [];\n emoji.short_names.unshift(id);\n emoji.sheet_x = emoji.sheet[0];\n emoji.sheet_y = emoji.sheet[1];\n delete emoji.sheet;\n if (!emoji.text) emoji.text = '';\n if (!emoji.added_in) emoji.added_in = 6;\n emoji.added_in = emoji.added_in.toFixed(1);\n emoji.search = buildSearch(emoji);\n }\n};\n\nexports.uncompress = uncompress;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = require(\"../../utils\");\n\nvar _data = require(\"../../utils/data\");\n\nvar _sharedProps = require(\"../../utils/shared-props\");\n\nvar _sharedDefaultProps = require(\"../../utils/shared-default-props\");\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) { (0, _defineProperty2[\"default\"])(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\nvar _getData = function _getData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return (0, _utils.getData)(emoji, skin, set, data);\n};\n\nvar _getPosition = function _getPosition(props) {\n var _getData2 = _getData(props),\n sheet_x = _getData2.sheet_x,\n sheet_y = _getData2.sheet_y,\n multiplyX = 100 / (props.sheetColumns - 1),\n multiplyY = 100 / (props.sheetRows - 1);\n\n return \"\".concat(multiplyX * sheet_x, \"% \").concat(multiplyY * sheet_y, \"%\");\n};\n\nvar _getSanitizedData = function _getSanitizedData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return (0, _utils.getSanitizedData)(emoji, skin, set, data);\n};\n\nvar _handleClick = function _handleClick(e, props) {\n if (!props.onClick) {\n return;\n }\n\n var onClick = props.onClick,\n emoji = _getSanitizedData(props);\n\n onClick(emoji, e);\n};\n\nvar _handleOver = function _handleOver(e, props) {\n if (!props.onOver) {\n return;\n }\n\n var onOver = props.onOver,\n emoji = _getSanitizedData(props);\n\n onOver(emoji, e);\n};\n\nvar _handleLeave = function _handleLeave(e, props) {\n if (!props.onLeave) {\n return;\n }\n\n var onLeave = props.onLeave,\n emoji = _getSanitizedData(props);\n\n onLeave(emoji, e);\n};\n\nvar _isNumeric = function _isNumeric(value) {\n return !isNaN(value - parseFloat(value));\n};\n\nvar _convertStyleToCSS = function _convertStyleToCSS(style) {\n var div = document.createElement('div');\n\n for (var key in style) {\n var value = style[key];\n\n if (_isNumeric(value)) {\n value += 'px';\n }\n\n div.style[key] = value;\n }\n\n return div.getAttribute('style');\n};\n\nvar NimbleEmoji = function NimbleEmoji(props) {\n if (props.data.compressed) {\n (0, _data.uncompress)(props.data);\n }\n\n for (var k in NimbleEmoji.defaultProps) {\n if (props[k] == undefined && NimbleEmoji.defaultProps[k] != undefined) {\n props[k] = NimbleEmoji.defaultProps[k];\n }\n }\n\n var data = _getData(props);\n\n if (!data) {\n if (props.fallback) {\n return props.fallback(null, props);\n } else {\n return null;\n }\n }\n\n var unified = data.unified,\n custom = data.custom,\n short_names = data.short_names,\n imageUrl = data.imageUrl,\n style = {},\n children = props.children,\n className = 'emoji-mart-emoji',\n nativeEmoji = unified && (0, _utils.unifiedToNative)(unified),\n label = [nativeEmoji].concat(short_names).filter(Boolean).join(', '),\n title = null;\n\n if (!unified && !custom) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n }\n\n if (props.tooltip) {\n title = short_names[0];\n }\n\n if (props[\"native\"] && unified) {\n className += ' emoji-mart-emoji-native';\n style = {\n fontSize: props.size\n };\n children = nativeEmoji;\n\n if (props.forceSize) {\n style.display = 'inline-block';\n style.width = props.size;\n style.height = props.size;\n style.wordBreak = 'keep-all';\n }\n } else if (custom) {\n className += ' emoji-mart-emoji-custom';\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block'\n };\n\n if (data.spriteUrl) {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(data.spriteUrl, \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n });\n } else {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(imageUrl, \")\"),\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center'\n });\n }\n } else {\n var setHasEmoji = data[\"has_img_\".concat(props.set)] == undefined || data[\"has_img_\".concat(props.set)];\n\n if (!setHasEmoji) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n } else {\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block',\n backgroundImage: \"url(\".concat(props.backgroundImageFn(props.set, props.sheetSize), \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n };\n }\n }\n\n var Tag = {\n name: 'span',\n props: {}\n };\n\n if (props.onClick && props.useButton) {\n Tag.name = 'button';\n Tag.props = {\n type: 'button'\n };\n }\n\n if (props.html) {\n style = _convertStyleToCSS(style);\n return \"<\".concat(Tag.name, \" style='\").concat(style, \"' aria-label='\").concat(label, \"' \").concat(title ? \"title='\".concat(title, \"'\") : '', \" class='\").concat(className, \"'>\").concat(children || '', \"\");\n } else {\n return _react[\"default\"].createElement(Tag.name, (0, _extends2[\"default\"])({\n onClick: function onClick(e) {\n return _handleClick(e, props);\n },\n onMouseEnter: function onMouseEnter(e) {\n return _handleOver(e, props);\n },\n onMouseLeave: function onMouseLeave(e) {\n return _handleLeave(e, props);\n },\n \"aria-label\": label,\n title: title,\n className: className\n }, Tag.props), _react[\"default\"].createElement(\"span\", {\n style: style\n }, children));\n }\n};\n\nNimbleEmoji.propTypes\n/* remove-proptypes */\n= _objectSpread({}, _sharedProps.EmojiPropTypes, {\n data: _propTypes[\"default\"].object.isRequired\n});\nNimbleEmoji.defaultProps = _sharedDefaultProps.EmojiDefaultProps;\nvar _default = NimbleEmoji;\nexports[\"default\"] = _default;","export default 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}","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 default 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}","// 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","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar getContentStateFragment = function getContentStateFragment(contentState, selectionState) {\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset(); // Edge entities should be stripped to ensure that we don't preserve\n // invalid partial entities when the fragment is reused. We do, however,\n // preserve entities that are entirely within the selection range.\n\n var contentWithoutEdgeEntities = removeEntitiesAtEdges(contentState, selectionState);\n var blockMap = contentWithoutEdgeEntities.getBlockMap();\n var blockKeys = blockMap.keySeq();\n var startIndex = blockKeys.indexOf(startKey);\n var endIndex = blockKeys.indexOf(endKey) + 1;\n return randomizeBlockMapKeys(blockMap.slice(startIndex, endIndex).map(function (block, blockKey) {\n var text = block.getText();\n var chars = block.getCharacterList();\n\n if (startKey === endKey) {\n return block.merge({\n text: text.slice(startOffset, endOffset),\n characterList: chars.slice(startOffset, endOffset)\n });\n }\n\n if (blockKey === startKey) {\n return block.merge({\n text: text.slice(startOffset),\n characterList: chars.slice(startOffset)\n });\n }\n\n if (blockKey === endKey) {\n return block.merge({\n text: text.slice(0, endOffset),\n characterList: chars.slice(0, endOffset)\n });\n }\n\n return block;\n }));\n};\n\nmodule.exports = getContentStateFragment;","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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 * 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 * @format\n * \n * @emails oncall+draft_js\n */\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar uuid = require(\"./uuid\");\n\nvar Map = Immutable.Map;\nvar instances = Map();\nvar instanceKey = uuid();\n/**\n * Temporary utility for generating the warnings\n */\n\nfunction logWarning(oldMethodCall, newMethodCall) {\n console.warn('WARNING: ' + oldMethodCall + ' will be deprecated soon!\\nPlease use \"' + newMethodCall + '\" instead.');\n}\n\n/**\n * A \"document entity\" is an object containing metadata associated with a\n * piece of text in a ContentBlock.\n *\n * For example, a `link` entity might include a `uri` property. When a\n * ContentBlock is rendered in the browser, text that refers to that link\n * entity may be rendered as an anchor, with the `uri` as the href value.\n *\n * In a ContentBlock, every position in the text may correspond to zero\n * or one entities. This correspondence is tracked using a key string,\n * generated via DraftEntity.create() and used to obtain entity metadata\n * via DraftEntity.get().\n */\nvar DraftEntity = {\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.getLastCreatedEntityKey' instead.\n * ---\n * Get the random key string from whatever entity was last created.\n * We need this to support the new API, as part of transitioning to put Entity\n * storage in contentState.\n */\n getLastCreatedEntityKey: function getLastCreatedEntityKey() {\n logWarning('DraftEntity.getLastCreatedEntityKey', 'contentState.getLastCreatedEntityKey');\n return DraftEntity.__getLastCreatedEntityKey();\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.createEntity' instead.\n * ---\n * Create a DraftEntityInstance and store it for later retrieval.\n *\n * A random key string will be generated and returned. This key may\n * be used to track the entity's usage in a ContentBlock, and for\n * retrieving data about the entity at render time.\n */\n create: function create(type, mutability, data) {\n logWarning('DraftEntity.create', 'contentState.createEntity');\n return DraftEntity.__create(type, mutability, data);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.addEntity' instead.\n * ---\n * Add an existing DraftEntityInstance to the DraftEntity map. This is\n * useful when restoring instances from the server.\n */\n add: function add(instance) {\n logWarning('DraftEntity.add', 'contentState.addEntity');\n return DraftEntity.__add(instance);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.getEntity' instead.\n * ---\n * Retrieve the entity corresponding to the supplied key string.\n */\n get: function get(key) {\n logWarning('DraftEntity.get', 'contentState.getEntity');\n return DraftEntity.__get(key);\n },\n\n /**\n * Get all the entities in the content state.\n */\n __getAll: function __getAll() {\n return instances;\n },\n\n /**\n * Load the entity map with the given set of entities.\n */\n __loadWithEntities: function __loadWithEntities(entities) {\n instances = entities;\n instanceKey = uuid();\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.mergeEntityData' instead.\n * ---\n * Entity instances are immutable. If you need to update the data for an\n * instance, this method will merge your data updates and return a new\n * instance.\n */\n mergeData: function mergeData(key, toMerge) {\n logWarning('DraftEntity.mergeData', 'contentState.mergeEntityData');\n return DraftEntity.__mergeData(key, toMerge);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.replaceEntityData' instead.\n * ---\n * Completely replace the data for a given instance.\n */\n replaceData: function replaceData(key, newData) {\n logWarning('DraftEntity.replaceData', 'contentState.replaceEntityData');\n return DraftEntity.__replaceData(key, newData);\n },\n // ***********************************WARNING******************************\n // --- the above public API will be deprecated in the next version of Draft!\n // The methods below this line are private - don't call them directly.\n\n /**\n * Get the random key string from whatever entity was last created.\n * We need this to support the new API, as part of transitioning to put Entity\n * storage in contentState.\n */\n __getLastCreatedEntityKey: function __getLastCreatedEntityKey() {\n return instanceKey;\n },\n\n /**\n * Create a DraftEntityInstance and store it for later retrieval.\n *\n * A random key string will be generated and returned. This key may\n * be used to track the entity's usage in a ContentBlock, and for\n * retrieving data about the entity at render time.\n */\n __create: function __create(type, mutability, data) {\n return DraftEntity.__add(new DraftEntityInstance({\n type: type,\n mutability: mutability,\n data: data || {}\n }));\n },\n\n /**\n * Add an existing DraftEntityInstance to the DraftEntity map. This is\n * useful when restoring instances from the server.\n */\n __add: function __add(instance) {\n instanceKey = uuid();\n instances = instances.set(instanceKey, instance);\n return instanceKey;\n },\n\n /**\n * Retrieve the entity corresponding to the supplied key string.\n */\n __get: function __get(key) {\n var instance = instances.get(key);\n !!!instance ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown DraftEntity key: %s.', key) : invariant(false) : void 0;\n return instance;\n },\n\n /**\n * Entity instances are immutable. If you need to update the data for an\n * instance, this method will merge your data updates and return a new\n * instance.\n */\n __mergeData: function __mergeData(key, toMerge) {\n var instance = DraftEntity.__get(key);\n\n var newData = _objectSpread({}, instance.getData(), toMerge);\n\n var newInstance = instance.set('data', newData);\n instances = instances.set(key, newInstance);\n return newInstance;\n },\n\n /**\n * Completely replace the data for a given instance.\n */\n __replaceData: function __replaceData(key, newData) {\n var instance = DraftEntity.__get(key);\n\n var newInstance = instance.set('data', newData);\n instances = instances.set(key, newInstance);\n return newInstance;\n }\n};\nmodule.exports = DraftEntity;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar defaultRecord = {\n anchorKey: '',\n anchorOffset: 0,\n focusKey: '',\n focusOffset: 0,\n isBackward: false,\n hasFocus: false\n};\n/* $FlowFixMe This comment suppresses an error found when automatically adding\n * a type annotation with the codemod Komodo/Annotate_exports. To see the error\n * delete this comment and run Flow. */\n\nvar SelectionStateRecord = Record(defaultRecord);\n\nvar SelectionState =\n/*#__PURE__*/\nfunction (_SelectionStateRecord) {\n _inheritsLoose(SelectionState, _SelectionStateRecord);\n\n function SelectionState() {\n return _SelectionStateRecord.apply(this, arguments) || this;\n }\n\n var _proto = SelectionState.prototype;\n\n _proto.serialize = function serialize() {\n return 'Anchor: ' + this.getAnchorKey() + ':' + this.getAnchorOffset() + ', ' + 'Focus: ' + this.getFocusKey() + ':' + this.getFocusOffset() + ', ' + 'Is Backward: ' + String(this.getIsBackward()) + ', ' + 'Has Focus: ' + String(this.getHasFocus());\n };\n\n _proto.getAnchorKey = function getAnchorKey() {\n return this.get('anchorKey');\n };\n\n _proto.getAnchorOffset = function getAnchorOffset() {\n return this.get('anchorOffset');\n };\n\n _proto.getFocusKey = function getFocusKey() {\n return this.get('focusKey');\n };\n\n _proto.getFocusOffset = function getFocusOffset() {\n return this.get('focusOffset');\n };\n\n _proto.getIsBackward = function getIsBackward() {\n return this.get('isBackward');\n };\n\n _proto.getHasFocus = function getHasFocus() {\n return this.get('hasFocus');\n }\n /**\n * Return whether the specified range overlaps with an edge of the\n * SelectionState.\n */\n ;\n\n _proto.hasEdgeWithin = function hasEdgeWithin(blockKey, start, end) {\n var anchorKey = this.getAnchorKey();\n var focusKey = this.getFocusKey();\n\n if (anchorKey === focusKey && anchorKey === blockKey) {\n var selectionStart = this.getStartOffset();\n var selectionEnd = this.getEndOffset();\n return start <= selectionStart && selectionStart <= end || // selectionStart is between start and end, or\n start <= selectionEnd && selectionEnd <= end // selectionEnd is between start and end\n ;\n }\n\n if (blockKey !== anchorKey && blockKey !== focusKey) {\n return false;\n }\n\n var offsetToCheck = blockKey === anchorKey ? this.getAnchorOffset() : this.getFocusOffset();\n return start <= offsetToCheck && end >= offsetToCheck;\n };\n\n _proto.isCollapsed = function isCollapsed() {\n return this.getAnchorKey() === this.getFocusKey() && this.getAnchorOffset() === this.getFocusOffset();\n };\n\n _proto.getStartKey = function getStartKey() {\n return this.getIsBackward() ? this.getFocusKey() : this.getAnchorKey();\n };\n\n _proto.getStartOffset = function getStartOffset() {\n return this.getIsBackward() ? this.getFocusOffset() : this.getAnchorOffset();\n };\n\n _proto.getEndKey = function getEndKey() {\n return this.getIsBackward() ? this.getAnchorKey() : this.getFocusKey();\n };\n\n _proto.getEndOffset = function getEndOffset() {\n return this.getIsBackward() ? this.getAnchorOffset() : this.getFocusOffset();\n };\n\n SelectionState.createEmpty = function createEmpty(key) {\n return new SelectionState({\n anchorKey: key,\n anchorOffset: 0,\n focusKey: key,\n focusOffset: 0,\n isBackward: false,\n hasFocus: false\n });\n };\n\n return SelectionState;\n}(SelectionStateRecord);\n\nmodule.exports = SelectionState;","/**\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 * @typechecks\n * \n */\n\n/**\n * Constants to represent text directionality\n *\n * Also defines a *global* direciton, to be used in bidi algorithms as a\n * default fallback direciton, when no better direction is found or provided.\n *\n * NOTE: Use `setGlobalDir()`, or update `initGlobalDir()`, to set the initial\n * global direction value based on the application.\n *\n * Part of the implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar NEUTRAL = 'NEUTRAL'; // No strong direction\n\nvar LTR = 'LTR'; // Left-to-Right direction\n\nvar RTL = 'RTL'; // Right-to-Left direction\n\nvar globalDir = null; // == Helpers ==\n\n/**\n * Check if a directionality value is a Strong one\n */\n\nfunction isStrong(dir) {\n return dir === LTR || dir === RTL;\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property.\n */\n\n\nfunction getHTMLDir(dir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === LTR ? 'ltr' : 'rtl';\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property, but returns null if `dir` has same value as `otherDir`.\n * `null`.\n */\n\n\nfunction getHTMLDirIfDifferent(dir, otherDir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n !isStrong(otherDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`otherDir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === otherDir ? null : getHTMLDir(dir);\n} // == Global Direction ==\n\n/**\n * Set the global direction.\n */\n\n\nfunction setGlobalDir(dir) {\n globalDir = dir;\n}\n/**\n * Initialize the global direction\n */\n\n\nfunction initGlobalDir() {\n setGlobalDir(LTR);\n}\n/**\n * Get the global direction\n */\n\n\nfunction getGlobalDir() {\n if (!globalDir) {\n this.initGlobalDir();\n }\n\n !globalDir ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Global direction not set.') : invariant(false) : void 0;\n return globalDir;\n}\n\nvar UnicodeBidiDirection = {\n // Values\n NEUTRAL: NEUTRAL,\n LTR: LTR,\n RTL: RTL,\n // Helpers\n isStrong: isStrong,\n getHTMLDir: getHTMLDir,\n getHTMLDirIfDifferent: getHTMLDirIfDifferent,\n // Global Direction\n setGlobalDir: setGlobalDir,\n initGlobalDir: initGlobalDir,\n getGlobalDir: getGlobalDir\n};\nmodule.exports = UnicodeBidiDirection;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n/**\n * Get the key from the node's nearest offset-aware ancestor.\n */\n\n\nfunction findAncestorOffsetKey(node) {\n var searchNode = node;\n\n while (searchNode && searchNode !== getCorrectDocumentFromNode(node).documentElement) {\n var key = getSelectionOffsetKeyForNode(searchNode);\n\n if (key != null) {\n return key;\n }\n\n searchNode = searchNode.parentNode;\n }\n\n return null;\n}\n\nmodule.exports = findAncestorOffsetKey;","\"use strict\";\n\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 * @format\n * \n * @emails oncall+draft_js\n */\nfunction getCorrectDocumentFromNode(node) {\n if (!node || !node.ownerDocument) {\n return document;\n }\n\n return node.ownerDocument;\n}\n\nmodule.exports = getCorrectDocumentFromNode;","\"use strict\";\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 */\nmodule.exports = {\n BACKSPACE: 8,\n TAB: 9,\n RETURN: 13,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46,\n COMMA: 188,\n PERIOD: 190,\n A: 65,\n Z: 90,\n ZERO: 48,\n NUMPAD_0: 96,\n NUMPAD_9: 105\n};","\"use strict\";\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 * @typechecks\n */\nvar getStyleProperty = require(\"./getStyleProperty\");\n/**\n * @param {DOMNode} element [description]\n * @param {string} name Overflow style property name.\n * @return {boolean} True if the supplied ndoe is scrollable.\n */\n\n\nfunction _isNodeScrollable(element, name) {\n var overflow = Style.get(element, name);\n return overflow === 'auto' || overflow === 'scroll';\n}\n/**\n * Utilities for querying and mutating style properties.\n */\n\n\nvar Style = {\n /**\n * Gets the style property for the supplied node. This will return either the\n * computed style, if available, or the declared style.\n *\n * @param {DOMNode} node\n * @param {string} name Style property name.\n * @return {?string} Style property value.\n */\n get: getStyleProperty,\n\n /**\n * Determines the nearest ancestor of a node that is scrollable.\n *\n * NOTE: This can be expensive if used repeatedly or on a node nested deeply.\n *\n * @param {?DOMNode} node Node from which to start searching.\n * @return {?DOMWindow|DOMElement} Scroll parent of the supplied node.\n */\n getScrollParent: function getScrollParent(node) {\n if (!node) {\n return null;\n }\n\n var ownerDocument = node.ownerDocument;\n\n while (node && node !== ownerDocument.body) {\n if (_isNodeScrollable(node, 'overflow') || _isNodeScrollable(node, 'overflowY') || _isNodeScrollable(node, 'overflowX')) {\n return node;\n }\n\n node = node.parentNode;\n }\n\n return ownerDocument.defaultView || ownerDocument.parentWindow;\n }\n};\nmodule.exports = Style;","/**\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 * @typechecks\n */\n'use strict';\n\nvar getDocumentScrollElement = require(\"./getDocumentScrollElement\");\n\nvar getUnboundedScrollPosition = require(\"./getUnboundedScrollPosition\");\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are bounded. This means that if the scroll position is\n * negative or exceeds the element boundaries (which is possible using inertial\n * scrolling), you will get zero or the maximum scroll position, respectively.\n *\n * If you need the unbound scroll position, use `getUnboundedScrollPosition`.\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\n\nfunction getScrollPosition(scrollable) {\n var documentScrollElement = getDocumentScrollElement(scrollable.ownerDocument || scrollable.document);\n\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n scrollable = documentScrollElement;\n }\n\n var scrollPosition = getUnboundedScrollPosition(scrollable);\n var viewport = scrollable === documentScrollElement ? scrollable.ownerDocument.documentElement : scrollable;\n var xMax = scrollable.scrollWidth - viewport.clientWidth;\n var yMax = scrollable.scrollHeight - viewport.clientHeight;\n scrollPosition.x = Math.max(0, Math.min(scrollPosition.x, xMax));\n scrollPosition.y = Math.max(0, Math.min(scrollPosition.y, yMax));\n return scrollPosition;\n}\n\nmodule.exports = getScrollPosition;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Utility method for determining whether or not the value returned\n * from a handler indicates that it was handled.\n */\nfunction isEventHandled(value) {\n return value === 'handled' || value === true;\n}\n\nmodule.exports = isEventHandled;","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _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(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\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}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport SvgIcon from '../SvgIcon';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function createSvgIcon(path, displayName) {\n var Component = function Component(props, ref) {\n return /*#__PURE__*/React.createElement(SvgIcon, _extends({\n ref: ref\n }, props), path);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _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}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('Material-UI: You are calling a style function without a theme value.');\n }\n }\n\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n\n var output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends(_extends({}, styleFunction.propTypes), {}, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default breakpoints;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport var easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport var duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nexport default {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = _objectWithoutProperties(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(_ref) {\n var controlled = _ref.controlled,\n defaultProp = _ref.default,\n name = _ref.name,\n _ref$state = _ref.state,\n state = _ref$state === void 0 ? 'value' : _ref$state;\n\n var _React$useRef = React.useRef(controlled !== undefined),\n isControlled = _React$useRef.current;\n\n var _React$useState = React.useState(defaultProp),\n valueState = _React$useState[0],\n setValue = _React$useState[1];\n\n var value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(function () {\n if (isControlled !== (controlled !== undefined)) {\n console.error([\"Material-UI: A component is changing the \".concat(isControlled ? '' : 'un', \"controlled \").concat(state, \" state of \").concat(name, \" to be \").concat(isControlled ? 'un' : '', \"controlled.\"), 'Elements should not switch from uncontrolled to controlled (or vice versa).', \"Decide between using a controlled or uncontrolled \".concat(name, \" \") + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [controlled]);\n\n var _React$useRef2 = React.useRef(defaultProp),\n defaultValue = _React$useRef2.current;\n\n React.useEffect(function () {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([\"Material-UI: A component is changing the default \".concat(state, \" state of an uncontrolled \").concat(name, \" after being initialized. \") + \"To suppress this warning opt to use a controlled \".concat(name, \".\")].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n\n var setValueIfUncontrolled = React.useCallback(function (newValue) {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","function _extends() {\n module.exports = _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\nmodule.exports = _extends;","export { default } from './SvgIcon';","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat,\n ImmutableMap = Immutable.Map,\n OrderedMap = Immutable.OrderedMap;\nvar defaultRecord = {\n entityMap: null,\n blockMap: null,\n selectionBefore: null,\n selectionAfter: null\n};\nvar ContentStateRecord = Record(defaultRecord);\n/* $FlowFixMe Supressing a `signature-verification-failure` error here.\n * TODO: T65949050 Clean up the branch for this GK\n */\n\nvar ContentBlockNodeRecord = gkx('draft_tree_data_support') ? ContentBlockNode : ContentBlock;\n\nvar ContentState =\n/*#__PURE__*/\nfunction (_ContentStateRecord) {\n _inheritsLoose(ContentState, _ContentStateRecord);\n\n function ContentState() {\n return _ContentStateRecord.apply(this, arguments) || this;\n }\n\n var _proto = ContentState.prototype;\n\n _proto.getEntityMap = function getEntityMap() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity;\n };\n\n _proto.getBlockMap = function getBlockMap() {\n return this.get('blockMap');\n };\n\n _proto.getSelectionBefore = function getSelectionBefore() {\n return this.get('selectionBefore');\n };\n\n _proto.getSelectionAfter = function getSelectionAfter() {\n return this.get('selectionAfter');\n };\n\n _proto.getBlockForKey = function getBlockForKey(key) {\n var block = this.getBlockMap().get(key);\n return block;\n };\n\n _proto.getKeyBefore = function getKeyBefore(key) {\n return this.getBlockMap().reverse().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n _proto.getKeyAfter = function getKeyAfter(key) {\n return this.getBlockMap().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n _proto.getBlockAfter = function getBlockAfter(key) {\n return this.getBlockMap().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n _proto.getBlockBefore = function getBlockBefore(key) {\n return this.getBlockMap().reverse().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n _proto.getBlocksAsArray = function getBlocksAsArray() {\n return this.getBlockMap().toArray();\n };\n\n _proto.getFirstBlock = function getFirstBlock() {\n return this.getBlockMap().first();\n };\n\n _proto.getLastBlock = function getLastBlock() {\n return this.getBlockMap().last();\n };\n\n _proto.getPlainText = function getPlainText(delimiter) {\n return this.getBlockMap().map(function (block) {\n return block ? block.getText() : '';\n }).join(delimiter || '\\n');\n };\n\n _proto.getLastCreatedEntityKey = function getLastCreatedEntityKey() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__getLastCreatedEntityKey();\n };\n\n _proto.hasText = function hasText() {\n var blockMap = this.getBlockMap();\n return blockMap.size > 1 || // make sure that there are no zero width space chars\n escape(blockMap.first().getText()).replace(/%u200B/g, '').length > 0;\n };\n\n _proto.createEntity = function createEntity(type, mutability, data) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__create(type, mutability, data);\n\n return this;\n };\n\n _proto.mergeEntityData = function mergeEntityData(key, toMerge) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__mergeData(key, toMerge);\n\n return this;\n };\n\n _proto.replaceEntityData = function replaceEntityData(key, newData) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__replaceData(key, newData);\n\n return this;\n };\n\n _proto.addEntity = function addEntity(instance) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__add(instance);\n\n return this;\n };\n\n _proto.getEntity = function getEntity(key) {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__get(key);\n };\n\n _proto.getAllEntities = function getAllEntities() {\n return DraftEntity.__getAll();\n };\n\n _proto.loadWithEntities = function loadWithEntities(entities) {\n return DraftEntity.__loadWithEntities(entities);\n };\n\n ContentState.createFromBlockArray = function createFromBlockArray( // TODO: update flow type when we completely deprecate the old entity API\n blocks, entityMap) {\n // TODO: remove this when we completely deprecate the old entity API\n var theBlocks = Array.isArray(blocks) ? blocks : blocks.contentBlocks;\n var blockMap = BlockMapBuilder.createFromArray(theBlocks);\n var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n return new ContentState({\n blockMap: blockMap,\n entityMap: entityMap || DraftEntity,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n };\n\n ContentState.createFromText = function createFromText(text) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /\\r\\n?|\\n/g;\n var strings = text.split(delimiter);\n var blocks = strings.map(function (block) {\n block = sanitizeDraftText(block);\n return new ContentBlockNodeRecord({\n key: generateRandomKey(),\n text: block,\n type: 'unstyled',\n characterList: List(Repeat(CharacterMetadata.EMPTY, block.length))\n });\n });\n return ContentState.createFromBlockArray(blocks);\n };\n\n ContentState.fromJS = function fromJS(state) {\n return new ContentState(_objectSpread({}, state, {\n blockMap: OrderedMap(state.blockMap).map(ContentState.createContentBlockFromJS),\n selectionBefore: new SelectionState(state.selectionBefore),\n selectionAfter: new SelectionState(state.selectionAfter)\n }));\n };\n\n ContentState.createContentBlockFromJS = function createContentBlockFromJS(block) {\n var characterList = block.characterList;\n return new ContentBlockNodeRecord(_objectSpread({}, block, {\n data: ImmutableMap(block.data),\n characterList: characterList != null ? List((Array.isArray(characterList) ? characterList : getOwnObjectValues(characterList)).map(function (c) {\n return CharacterMetadata.fromJS(c);\n })) : undefined\n }));\n };\n\n return ContentState;\n}(ContentStateRecord);\n\nmodule.exports = ContentState;","/**\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 * @typechecks\n * \n */\n\n/**\n * Basic (stateless) API for text direction detection\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\n/**\n * RegExp ranges of characters with a *Strong* Bidi_Class value.\n *\n * Data is based on DerivedBidiClass.txt in UCD version 7.0.0.\n *\n * NOTE: For performance reasons, we only support Unicode's\n * Basic Multilingual Plane (BMP) for now.\n */\nvar RANGE_BY_BIDI_TYPE = {\n L: \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BB\" + \"\\u01BC-\\u01BF\\u01C0-\\u01C3\\u01C4-\\u0293\\u0294\\u0295-\\u02AF\\u02B0-\\u02B8\" + \"\\u02BB-\\u02C1\\u02D0-\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376-\\u0377\" + \"\\u037A\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\" + \"\\u03A3-\\u03F5\\u03F7-\\u0481\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559\" + \"\\u055A-\\u055F\\u0561-\\u0587\\u0589\\u0903\\u0904-\\u0939\\u093B\\u093D\" + \"\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0950\\u0958-\\u0961\\u0964-\\u0965\" + \"\\u0966-\\u096F\\u0970\\u0971\\u0972-\\u0980\\u0982-\\u0983\\u0985-\\u098C\" + \"\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\" + \"\\u09BE-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u09CE\\u09D7\\u09DC-\\u09DD\" + \"\\u09DF-\\u09E1\\u09E6-\\u09EF\\u09F0-\\u09F1\\u09F4-\\u09F9\\u09FA\\u0A03\" + \"\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\" + \"\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\" + \"\\u0A72-\\u0A74\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\" + \"\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0AD0\" + \"\\u0AE0-\\u0AE1\\u0AE6-\\u0AEF\\u0AF0\\u0B02-\\u0B03\\u0B05-\\u0B0C\\u0B0F-\\u0B10\" + \"\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\" + \"\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0B57\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\" + \"\\u0B70\\u0B71\\u0B72-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\" + \"\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\" + \"\\u0BBE-\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\" + \"\\u0BE6-\\u0BEF\\u0BF0-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\" + \"\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C59\\u0C60-\\u0C61\" + \"\\u0C66-\\u0C6F\\u0C7F\\u0C82-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\" + \"\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CBE\\u0CBF\\u0CC0-\\u0CC4\\u0CC6\" + \"\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0CD5-\\u0CD6\\u0CDE\\u0CE0-\\u0CE1\\u0CE6-\\u0CEF\" + \"\\u0CF1-\\u0CF2\\u0D02-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\" + \"\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D57\\u0D60-\\u0D61\" + \"\\u0D66-\\u0D6F\\u0D70-\\u0D75\\u0D79\\u0D7A-\\u0D7F\\u0D82-\\u0D83\\u0D85-\\u0D96\" + \"\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\" + \"\\u0DE6-\\u0DEF\\u0DF2-\\u0DF3\\u0DF4\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\" + \"\\u0E46\\u0E4F\\u0E50-\\u0E59\\u0E5A-\\u0E5B\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\" + \"\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\" + \"\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\" + \"\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F01-\\u0F03\\u0F04-\\u0F12\\u0F13\\u0F14\" + \"\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F20-\\u0F29\\u0F2A-\\u0F33\\u0F34\\u0F36\\u0F38\" + \"\\u0F3E-\\u0F3F\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\" + \"\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FCF\\u0FD0-\\u0FD4\\u0FD5-\\u0FD8\" + \"\\u0FD9-\\u0FDA\\u1000-\\u102A\\u102B-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u103F\" + \"\\u1040-\\u1049\\u104A-\\u104F\\u1050-\\u1055\\u1056-\\u1057\\u105A-\\u105D\\u1061\" + \"\\u1062-\\u1064\\u1065-\\u1066\\u1067-\\u106D\\u106E-\\u1070\\u1075-\\u1081\" + \"\\u1083-\\u1084\\u1087-\\u108C\\u108E\\u108F\\u1090-\\u1099\\u109A-\\u109C\" + \"\\u109E-\\u109F\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FB\\u10FC\" + \"\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\" + \"\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\" + \"\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u1368\" + \"\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166D-\\u166E\" + \"\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EB-\\u16ED\\u16EE-\\u16F0\" + \"\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1735-\\u1736\" + \"\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\" + \"\\u17C7-\\u17C8\\u17D4-\\u17D6\\u17D7\\u17D8-\\u17DA\\u17DC\\u17E0-\\u17E9\" + \"\\u1810-\\u1819\\u1820-\\u1842\\u1843\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\" + \"\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\" + \"\\u1933-\\u1938\\u1946-\\u194F\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\" + \"\\u19B0-\\u19C0\\u19C1-\\u19C7\\u19C8-\\u19C9\\u19D0-\\u19D9\\u19DA\\u1A00-\\u1A16\" + \"\\u1A19-\\u1A1A\\u1A1E-\\u1A1F\\u1A20-\\u1A54\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\" + \"\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AA6\\u1AA7\\u1AA8-\\u1AAD\" + \"\\u1B04\\u1B05-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B45-\\u1B4B\" + \"\\u1B50-\\u1B59\\u1B5A-\\u1B60\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1B82\\u1B83-\\u1BA0\" + \"\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BAE-\\u1BAF\\u1BB0-\\u1BB9\\u1BBA-\\u1BE5\\u1BE7\" + \"\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1BFC-\\u1BFF\\u1C00-\\u1C23\\u1C24-\\u1C2B\" + \"\\u1C34-\\u1C35\\u1C3B-\\u1C3F\\u1C40-\\u1C49\\u1C4D-\\u1C4F\\u1C50-\\u1C59\" + \"\\u1C5A-\\u1C77\\u1C78-\\u1C7D\\u1C7E-\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u1CE1\" + \"\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF2-\\u1CF3\\u1CF5-\\u1CF6\\u1D00-\\u1D2B\" + \"\\u1D2C-\\u1D6A\\u1D6B-\\u1D77\\u1D78\\u1D79-\\u1D9A\\u1D9B-\\u1DBF\\u1E00-\\u1F15\" + \"\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\" + \"\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\" + \"\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\" + \"\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\" + \"\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2135-\\u2138\\u2139\" + \"\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2182\\u2183-\\u2184\" + \"\\u2185-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\" + \"\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C7B\\u2C7C-\\u2C7D\\u2C7E-\\u2CE4\" + \"\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\" + \"\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\" + \"\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005\\u3006\\u3007\" + \"\\u3021-\\u3029\\u302E-\\u302F\\u3031-\\u3035\\u3038-\\u303A\\u303B\\u303C\" + \"\\u3041-\\u3096\\u309D-\\u309E\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FE\\u30FF\" + \"\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u3191\\u3192-\\u3195\\u3196-\\u319F\" + \"\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3200-\\u321C\\u3220-\\u3229\\u322A-\\u3247\" + \"\\u3248-\\u324F\\u3260-\\u327B\\u327F\\u3280-\\u3289\\u328A-\\u32B0\\u32C0-\\u32CB\" + \"\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\" + \"\\u4E00-\\u9FCC\\uA000-\\uA014\\uA015\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA4F8-\\uA4FD\" + \"\\uA4FE-\\uA4FF\\uA500-\\uA60B\\uA60C\\uA610-\\uA61F\\uA620-\\uA629\\uA62A-\\uA62B\" + \"\\uA640-\\uA66D\\uA66E\\uA680-\\uA69B\\uA69C-\\uA69D\\uA6A0-\\uA6E5\\uA6E6-\\uA6EF\" + \"\\uA6F2-\\uA6F7\\uA722-\\uA76F\\uA770\\uA771-\\uA787\\uA789-\\uA78A\\uA78B-\\uA78E\" + \"\\uA790-\\uA7AD\\uA7B0-\\uA7B1\\uA7F7\\uA7F8-\\uA7F9\\uA7FA\\uA7FB-\\uA801\" + \"\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA823-\\uA824\\uA827\\uA830-\\uA835\" + \"\\uA836-\\uA837\\uA840-\\uA873\\uA880-\\uA881\\uA882-\\uA8B3\\uA8B4-\\uA8C3\" + \"\\uA8CE-\\uA8CF\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8F8-\\uA8FA\\uA8FB\\uA900-\\uA909\" + \"\\uA90A-\\uA925\\uA92E-\\uA92F\\uA930-\\uA946\\uA952-\\uA953\\uA95F\\uA960-\\uA97C\" + \"\\uA983\\uA984-\\uA9B2\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uA9C0\\uA9C1-\\uA9CD\" + \"\\uA9CF\\uA9D0-\\uA9D9\\uA9DE-\\uA9DF\\uA9E0-\\uA9E4\\uA9E6\\uA9E7-\\uA9EF\" + \"\\uA9F0-\\uA9F9\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA2F-\\uAA30\\uAA33-\\uAA34\" + \"\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA5F\\uAA60-\\uAA6F\" + \"\\uAA70\\uAA71-\\uAA76\\uAA77-\\uAA79\\uAA7A\\uAA7B\\uAA7D\\uAA7E-\\uAAAF\\uAAB1\" + \"\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAADD\\uAADE-\\uAADF\" + \"\\uAAE0-\\uAAEA\\uAAEB\\uAAEE-\\uAAEF\\uAAF0-\\uAAF1\\uAAF2\\uAAF3-\\uAAF4\\uAAF5\" + \"\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\" + \"\\uAB30-\\uAB5A\\uAB5B\\uAB5C-\\uAB5F\\uAB64-\\uAB65\\uABC0-\\uABE2\\uABE3-\\uABE4\" + \"\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEB\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\" + \"\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uE000-\\uF8FF\\uF900-\\uFA6D\\uFA70-\\uFAD9\" + \"\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFF6F\\uFF70\" + \"\\uFF71-\\uFF9D\\uFF9E-\\uFF9F\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\" + \"\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\",\n R: \"\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05D0-\\u05EA\\u05EB-\\u05EF\" + \"\\u05F0-\\u05F2\\u05F3-\\u05F4\\u05F5-\\u05FF\\u07C0-\\u07C9\\u07CA-\\u07EA\" + \"\\u07F4-\\u07F5\\u07FA\\u07FB-\\u07FF\\u0800-\\u0815\\u081A\\u0824\\u0828\" + \"\\u082E-\\u082F\\u0830-\\u083E\\u083F\\u0840-\\u0858\\u085C-\\u085D\\u085E\" + \"\\u085F-\\u089F\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB37\\uFB38-\\uFB3C\" + \"\\uFB3D\\uFB3E\\uFB3F\\uFB40-\\uFB41\\uFB42\\uFB43-\\uFB44\\uFB45\\uFB46-\\uFB4F\",\n AL: \"\\u0608\\u060B\\u060D\\u061B\\u061C\\u061D\\u061E-\\u061F\\u0620-\\u063F\\u0640\" + \"\\u0641-\\u064A\\u066D\\u066E-\\u066F\\u0671-\\u06D3\\u06D4\\u06D5\\u06E5-\\u06E6\" + \"\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FD-\\u06FE\\u06FF\\u0700-\\u070D\\u070E\\u070F\" + \"\\u0710\\u0712-\\u072F\\u074B-\\u074C\\u074D-\\u07A5\\u07B1\\u07B2-\\u07BF\" + \"\\u08A0-\\u08B2\\u08B3-\\u08E3\\uFB50-\\uFBB1\\uFBB2-\\uFBC1\\uFBC2-\\uFBD2\" + \"\\uFBD3-\\uFD3D\\uFD40-\\uFD4F\\uFD50-\\uFD8F\\uFD90-\\uFD91\\uFD92-\\uFDC7\" + \"\\uFDC8-\\uFDCF\\uFDF0-\\uFDFB\\uFDFC\\uFDFE-\\uFDFF\\uFE70-\\uFE74\\uFE75\" + \"\\uFE76-\\uFEFC\\uFEFD-\\uFEFE\"\n};\nvar REGEX_STRONG = new RegExp('[' + RANGE_BY_BIDI_TYPE.L + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\nvar REGEX_RTL = new RegExp('[' + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\n/**\n * Returns the first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return A character with strong bidi direction, or null if not found\n */\n\nfunction firstStrongChar(str) {\n var match = REGEX_STRONG.exec(str);\n return match == null ? null : match[0];\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return The resolved direction\n */\n\n\nfunction firstStrongCharDir(str) {\n var strongChar = firstStrongChar(str);\n\n if (strongChar == null) {\n return UnicodeBidiDirection.NEUTRAL;\n }\n\n return REGEX_RTL.exec(strongChar) ? UnicodeBidiDirection.RTL : UnicodeBidiDirection.LTR;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @param fallback Fallback direction, used if no strong direction detected\n * for the block (default = NEUTRAL)\n * @return The resolved direction\n */\n\n\nfunction resolveBlockDir(str, fallback) {\n fallback = fallback || UnicodeBidiDirection.NEUTRAL;\n\n if (!str.length) {\n return fallback;\n }\n\n var blockDir = firstStrongCharDir(str);\n return blockDir === UnicodeBidiDirection.NEUTRAL ? fallback : blockDir;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * NOTE: This function is similar to resolveBlockDir(), but uses the global\n * direction as the fallback, so it *always* returns a Strong direction,\n * making it useful for integration in places that you need to make the final\n * decision, like setting some CSS class.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return The resolved Strong direction\n */\n\n\nfunction getDirection(str, strongFallback) {\n if (!strongFallback) {\n strongFallback = UnicodeBidiDirection.getGlobalDir();\n }\n\n !UnicodeBidiDirection.isStrong(strongFallback) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Fallback direction must be a strong direction') : invariant(false) : void 0;\n return resolveBlockDir(str, strongFallback);\n}\n/**\n * Returns true if getDirection(arguments...) returns LTR.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is LTR\n */\n\n\nfunction isDirectionLTR(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.LTR;\n}\n/**\n * Returns true if getDirection(arguments...) returns RTL.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is RTL\n */\n\n\nfunction isDirectionRTL(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.RTL;\n}\n\nvar UnicodeBidi = {\n firstStrongChar: firstStrongChar,\n firstStrongCharDir: firstStrongCharDir,\n resolveBlockDir: resolveBlockDir,\n getDirection: getDirection,\n isDirectionLTR: isDirectionLTR,\n isDirectionRTL: isDirectionRTL\n};\nmodule.exports = UnicodeBidi;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar _require = require(\"immutable\"),\n Map = _require.Map;\n\nvar UL_WRAP = React.createElement(\"ul\", {\n className: cx('public/DraftStyleDefault/ul')\n});\nvar OL_WRAP = React.createElement(\"ol\", {\n className: cx('public/DraftStyleDefault/ol')\n});\nvar PRE_WRAP = React.createElement(\"pre\", {\n className: cx('public/DraftStyleDefault/pre')\n});\nvar DefaultDraftBlockRenderMap = Map({\n 'header-one': {\n element: 'h1'\n },\n 'header-two': {\n element: 'h2'\n },\n 'header-three': {\n element: 'h3'\n },\n 'header-four': {\n element: 'h4'\n },\n 'header-five': {\n element: 'h5'\n },\n 'header-six': {\n element: 'h6'\n },\n section: {\n element: 'section'\n },\n article: {\n element: 'article'\n },\n 'unordered-list-item': {\n element: 'li',\n wrapper: UL_WRAP\n },\n 'ordered-list-item': {\n element: 'li',\n wrapper: OL_WRAP\n },\n blockquote: {\n element: 'blockquote'\n },\n atomic: {\n element: 'figure'\n },\n 'code-block': {\n element: 'pre',\n wrapper: PRE_WRAP\n },\n unstyled: {\n element: 'div',\n aliasedElements: ['p']\n }\n});\nmodule.exports = DefaultDraftBlockRenderMap;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _require = require(\"./draftKeyUtils\"),\n notEmptyKey = _require.notEmptyKey;\n/**\n * Return the entity key that should be used when inserting text for the\n * specified target selection, only if the entity is `MUTABLE`. `IMMUTABLE`\n * and `SEGMENTED` entities should not be used for insertion behavior.\n */\n\n\nfunction getEntityKeyForSelection(contentState, targetSelection) {\n var entityKey;\n\n if (targetSelection.isCollapsed()) {\n var key = targetSelection.getAnchorKey();\n var offset = targetSelection.getAnchorOffset();\n\n if (offset > 0) {\n entityKey = contentState.getBlockForKey(key).getEntityAt(offset - 1);\n\n if (entityKey !== contentState.getBlockForKey(key).getEntityAt(offset)) {\n return null;\n }\n\n return filterKey(contentState.getEntityMap(), entityKey);\n }\n\n return null;\n }\n\n var startKey = targetSelection.getStartKey();\n var startOffset = targetSelection.getStartOffset();\n var startBlock = contentState.getBlockForKey(startKey);\n entityKey = startOffset === startBlock.getLength() ? null : startBlock.getEntityAt(startOffset);\n return filterKey(contentState.getEntityMap(), entityKey);\n}\n/**\n * Determine whether an entity key corresponds to a `MUTABLE` entity. If so,\n * return it. If not, return null.\n */\n\n\nfunction filterKey(entityMap, entityKey) {\n if (notEmptyKey(entityKey)) {\n var entity = entityMap.__get(entityKey);\n\n return entity.getMutability() === 'MUTABLE' ? entityKey : null;\n }\n\n return null;\n}\n\nmodule.exports = getEntityKeyForSelection;","\"use strict\";\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 */\nvar isTextNode = require(\"./isTextNode\");\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\n\n\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;","\"use strict\";\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\n/**\n * @param {DOMElement} element\n * @param {DOMDocument} doc\n * @return {boolean}\n */\nfunction _isViewportScrollElement(element, doc) {\n return !!doc && (element === doc.documentElement || element === doc.body);\n}\n/**\n * Scroll Module. This class contains 4 simple static functions\n * to be used to access Element.scrollTop/scrollLeft properties.\n * To solve the inconsistencies between browsers when either\n * document.body or document.documentElement is supplied,\n * below logic will be used to alleviate the issue:\n *\n * 1. If 'element' is either 'document.body' or 'document.documentElement,\n * get whichever element's 'scroll{Top,Left}' is larger.\n * 2. If 'element' is either 'document.body' or 'document.documentElement',\n * set the 'scroll{Top,Left}' on both elements.\n */\n\n\nvar Scroll = {\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getTop: function getTop(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? // In practice, they will either both have the same value,\n // or one will be zero and the other will be the scroll position\n // of the viewport. So we can use `X || Y` instead of `Math.max(X, Y)`\n doc.body.scrollTop || doc.documentElement.scrollTop : element.scrollTop;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newTop\n */\n setTop: function setTop(element, newTop) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollTop = doc.documentElement.scrollTop = newTop;\n } else {\n element.scrollTop = newTop;\n }\n },\n\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getLeft: function getLeft(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? doc.body.scrollLeft || doc.documentElement.scrollLeft : element.scrollLeft;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newLeft\n */\n setLeft: function setLeft(element, newLeft) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollLeft = doc.documentElement.scrollLeft = newLeft;\n } else {\n element.scrollLeft = newLeft;\n }\n }\n};\nmodule.exports = Scroll;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` backward within\n * the selected block. If the selection will go beyond the start of the block,\n * move focus to the end of the previous block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionBackward(editorState, maxDistance) {\n var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionBackward should only be called with a collapsed SelectionState') : void 0;\n var content = editorState.getCurrentContent();\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n var focusKey = key;\n var focusOffset = 0;\n\n if (maxDistance > offset) {\n var keyBefore = content.getKeyBefore(key);\n\n if (keyBefore == null) {\n focusKey = key;\n } else {\n focusKey = keyBefore;\n var blockBefore = content.getBlockForKey(keyBefore);\n focusOffset = blockBefore.getText().length;\n }\n } else {\n focusOffset = offset - maxDistance;\n }\n\n return selection.merge({\n focusKey: focusKey,\n focusOffset: focusOffset,\n isBackward: true\n });\n}\n\nmodule.exports = moveSelectionBackward;","/**\n * Copyright (c) 2014-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 emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\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 var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n}\n\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n} : emptyFunction;\nmodule.exports = warning;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isSoftNewlineEvent = require(\"./isSoftNewlineEvent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X');\nvar KeyBindingUtil = {\n /**\n * Check whether the ctrlKey modifier is *not* being used in conjunction with\n * the altKey modifier. If they are combined, the result is an `altGraph`\n * key modifier, which should not be handled by this set of key bindings.\n */\n isCtrlKeyCommand: function isCtrlKeyCommand(e) {\n return !!e.ctrlKey && !e.altKey;\n },\n isOptionKeyCommand: function isOptionKeyCommand(e) {\n return isOSX && e.altKey;\n },\n usesMacOSHeuristics: function usesMacOSHeuristics() {\n return isOSX;\n },\n hasCommandModifier: function hasCommandModifier(e) {\n return isOSX ? !!e.metaKey && !e.altKey : KeyBindingUtil.isCtrlKeyCommand(e);\n },\n isSoftNewlineEvent: isSoftNewlineEvent\n};\nmodule.exports = KeyBindingUtil;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar NAMESPACE = 'emoji-mart';\nvar isLocalStorageSupported = typeof window !== 'undefined' && 'localStorage' in window;\nvar getter;\nvar setter;\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {});\n getter = handlers.getter;\n setter = handlers.setter;\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace;\n}\n\nfunction update(state) {\n for (var key in state) {\n var value = state[key];\n set(key, value);\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)] = JSON.stringify(value);\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n var value = window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)];\n\n if (value) {\n return JSON.parse(value);\n }\n } catch (e) {\n return;\n }\n }\n}\n\nvar _default = {\n update: update,\n set: set,\n get: get,\n setNamespace: setNamespace,\n setHandlers: setHandlers\n};\nexports[\"default\"] = _default;","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","//! moment.js\n//! version : 2.27.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.27.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\n\nvar randomizeContentBlockNodeKeys = function randomizeContentBlockNodeKeys(blockMap) {\n var newKeysRef = {}; // we keep track of root blocks in order to update subsequent sibling links\n\n var lastRootBlock;\n return OrderedMap(blockMap.withMutations(function (blockMapState) {\n blockMapState.forEach(function (block, index) {\n var oldKey = block.getKey();\n var nextKey = block.getNextSiblingKey();\n var prevKey = block.getPrevSiblingKey();\n var childrenKeys = block.getChildKeys();\n var parentKey = block.getParentKey(); // new key that we will use to build linking\n\n var key = generateRandomKey(); // we will add it here to re-use it later\n\n newKeysRef[oldKey] = key;\n\n if (nextKey) {\n var nextBlock = blockMapState.get(nextKey);\n\n if (nextBlock) {\n blockMapState.setIn([nextKey, 'prevSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'nextSibling'], null);\n }\n }\n\n if (prevKey) {\n var prevBlock = blockMapState.get(prevKey);\n\n if (prevBlock) {\n blockMapState.setIn([prevKey, 'nextSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'prevSibling'], null);\n }\n }\n\n if (parentKey && blockMapState.get(parentKey)) {\n var parentBlock = blockMapState.get(parentKey);\n var parentChildrenList = parentBlock.getChildKeys();\n blockMapState.setIn([parentKey, 'children'], parentChildrenList.set(parentChildrenList.indexOf(block.getKey()), key));\n } else {\n // blocks will then be treated as root block nodes\n blockMapState.setIn([oldKey, 'parent'], null);\n\n if (lastRootBlock) {\n blockMapState.setIn([lastRootBlock.getKey(), 'nextSibling'], key);\n blockMapState.setIn([oldKey, 'prevSibling'], newKeysRef[lastRootBlock.getKey()]);\n }\n\n lastRootBlock = blockMapState.get(oldKey);\n }\n\n childrenKeys.forEach(function (childKey) {\n var childBlock = blockMapState.get(childKey);\n\n if (childBlock) {\n blockMapState.setIn([childKey, 'parent'], key);\n } else {\n blockMapState.setIn([oldKey, 'children'], block.getChildKeys().filter(function (child) {\n return child !== childKey;\n }));\n }\n });\n });\n }).toArray().map(function (block) {\n return [newKeysRef[block.getKey()], block.set('key', newKeysRef[block.getKey()])];\n }));\n};\n\nvar randomizeContentBlockKeys = function randomizeContentBlockKeys(blockMap) {\n return OrderedMap(blockMap.toArray().map(function (block) {\n var key = generateRandomKey();\n return [key, block.set('key', key)];\n }));\n};\n\nvar randomizeBlockMapKeys = function randomizeBlockMapKeys(blockMap) {\n var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n\n if (!isTreeBasedBlockMap) {\n return randomizeContentBlockKeys(blockMap);\n }\n\n return randomizeContentBlockNodeKeys(blockMap);\n};\n\nmodule.exports = randomizeBlockMapKeys;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nfunction removeEntitiesAtEdges(contentState, selectionState) {\n var blockMap = contentState.getBlockMap();\n var entityMap = contentState.getEntityMap();\n var updatedBlocks = {};\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var startBlock = blockMap.get(startKey);\n var updatedStart = removeForBlock(entityMap, startBlock, startOffset);\n\n if (updatedStart !== startBlock) {\n updatedBlocks[startKey] = updatedStart;\n }\n\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var endBlock = blockMap.get(endKey);\n\n if (startKey === endKey) {\n endBlock = updatedStart;\n }\n\n var updatedEnd = removeForBlock(entityMap, endBlock, endOffset);\n\n if (updatedEnd !== endBlock) {\n updatedBlocks[endKey] = updatedEnd;\n }\n\n if (!Object.keys(updatedBlocks).length) {\n return contentState.set('selectionAfter', selectionState);\n }\n\n return contentState.merge({\n blockMap: blockMap.merge(updatedBlocks),\n selectionAfter: selectionState\n });\n}\n/**\n * Given a list of characters and an offset that is in the middle of an entity,\n * returns the start and end of the entity that is overlapping the offset.\n * Note: This method requires that the offset be in an entity range.\n */\n\n\nfunction getRemovalRange(characters, entityKey, offset) {\n var removalRange; // Iterates through a list looking for ranges of matching items\n // based on the 'isEqual' callback.\n // Then instead of returning the result, call the 'found' callback\n // with each range.\n // Then filters those ranges based on the 'filter' callback\n //\n // Here we use it to find ranges of characters with the same entity key.\n\n findRangesImmutable(characters, // the list to iterate through\n function (a, b) {\n return a.getEntity() === b.getEntity();\n }, // 'isEqual' callback\n function (element) {\n return element.getEntity() === entityKey;\n }, // 'filter' callback\n function (start, end) {\n // 'found' callback\n if (start <= offset && end >= offset) {\n // this entity overlaps the offset index\n removalRange = {\n start: start,\n end: end\n };\n }\n });\n !(typeof removalRange === 'object') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Removal range must exist within character list.') : invariant(false) : void 0;\n return removalRange;\n}\n\nfunction removeForBlock(entityMap, block, offset) {\n var chars = block.getCharacterList();\n var charBefore = offset > 0 ? chars.get(offset - 1) : undefined;\n var charAfter = offset < chars.count() ? chars.get(offset) : undefined;\n var entityBeforeCursor = charBefore ? charBefore.getEntity() : undefined;\n var entityAfterCursor = charAfter ? charAfter.getEntity() : undefined;\n\n if (entityAfterCursor && entityAfterCursor === entityBeforeCursor) {\n var entity = entityMap.__get(entityAfterCursor);\n\n if (entity.getMutability() !== 'MUTABLE') {\n var _getRemovalRange = getRemovalRange(chars, entityAfterCursor, offset),\n start = _getRemovalRange.start,\n end = _getRemovalRange.end;\n\n var current;\n\n while (start < end) {\n current = chars.get(start);\n chars = chars.set(start, CharacterMetadata.applyEntity(current, null));\n start++;\n }\n\n return block.set('characterList', chars);\n }\n }\n\n return block;\n}\n\nmodule.exports = removeEntitiesAtEdges;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Maintain persistence for target list when appending and prepending.\n */\nfunction insertIntoList(targetListArg, toInsert, offset) {\n var targetList = targetListArg;\n\n if (offset === targetList.count()) {\n toInsert.forEach(function (c) {\n targetList = targetList.push(c);\n });\n } else if (offset === 0) {\n toInsert.reverse().forEach(function (c) {\n targetList = targetList.unshift(c);\n });\n } else {\n var head = targetList.slice(0, offset);\n var tail = targetList.slice(offset);\n targetList = head.concat(toInsert, tail).toList();\n }\n\n return targetList;\n}\n\nmodule.exports = insertIntoList;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar Map = Immutable.Map;\n\nfunction modifyBlockForContentState(contentState, selectionState, operation) {\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var blockMap = contentState.getBlockMap();\n var newBlocks = blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat(Map([[endKey, blockMap.get(endKey)]])).map(operation);\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = modifyBlockForContentState;","\"use strict\";\n\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 * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = function getNextDelimiterBlockKey(block, blockMap) {\n var isExperimentalTreeBlock = block instanceof ContentBlockNode;\n\n if (!isExperimentalTreeBlock) {\n return null;\n }\n\n var nextSiblingKey = block.getNextSiblingKey();\n\n if (nextSiblingKey) {\n return nextSiblingKey;\n }\n\n var parent = block.getParentKey();\n\n if (!parent) {\n return null;\n }\n\n var nextNonDescendantBlock = blockMap.get(parent);\n\n while (nextNonDescendantBlock && !nextNonDescendantBlock.getNextSiblingKey()) {\n var parentKey = nextNonDescendantBlock.getParentKey();\n nextNonDescendantBlock = parentKey ? blockMap.get(parentKey) : null;\n }\n\n if (!nextNonDescendantBlock) {\n return null;\n }\n\n return nextNonDescendantBlock.getNextSiblingKey();\n};\n\nmodule.exports = getNextDelimiterBlockKey;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * \n * @typechecks\n * @format\n */\n\n/**\n * Retrieve an object's own values as an array. If you want the values in the\n * protoype chain, too, use getObjectValuesIncludingPrototype.\n *\n * If you are looking for a function that creates an Array instance based\n * on an \"Array-like\" object, use createArrayFrom instead.\n *\n * @param {object} obj An object.\n * @return {array} The object's values.\n */\nfunction getOwnObjectValues(obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n}\n\nmodule.exports = getOwnObjectValues;","/**\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 * @legacyServerCallableInstance\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar DraftEntityInstanceRecord = Record({\n type: 'TOKEN',\n mutability: 'IMMUTABLE',\n data: Object\n});\n/**\n * An instance of a document entity, consisting of a `type` and relevant\n * `data`, metadata about the entity.\n *\n * For instance, a \"link\" entity might provide a URI, and a \"mention\"\n * entity might provide the mentioned user's ID. These pieces of data\n * may be used when rendering the entity as part of a ContentBlock DOM\n * representation. For a link, the data would be used as an href for\n * the rendered anchor. For a mention, the ID could be used to retrieve\n * a hovercard.\n */\n\nvar DraftEntityInstance =\n/*#__PURE__*/\nfunction (_DraftEntityInstanceR) {\n _inheritsLoose(DraftEntityInstance, _DraftEntityInstanceR);\n\n function DraftEntityInstance() {\n return _DraftEntityInstanceR.apply(this, arguments) || this;\n }\n\n var _proto = DraftEntityInstance.prototype;\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getMutability = function getMutability() {\n return this.get('mutability');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n return DraftEntityInstance;\n}(DraftEntityInstanceRecord);\n\nmodule.exports = DraftEntityInstance;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar REGEX_BLOCK_DELIMITER = new RegExp('\\r', 'g');\n\nfunction sanitizeDraftText(input) {\n return input.replace(REGEX_BLOCK_DELIMITER, '');\n}\n\nmodule.exports = sanitizeDraftText;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nmodule.exports = {\n BOLD: {\n fontWeight: 'bold'\n },\n CODE: {\n fontFamily: 'monospace',\n wordWrap: 'break-word'\n },\n ITALIC: {\n fontStyle: 'italic'\n },\n STRIKETHROUGH: {\n textDecoration: 'line-through'\n },\n UNDERLINE: {\n textDecoration: 'underline'\n }\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n/**\n * Get offset key from a node or it's child nodes. Return the first offset key\n * found on the DOM tree of given node.\n */\n\nvar isElement = require(\"./isElement\");\n\nfunction getSelectionOffsetKeyForNode(node) {\n if (isElement(node)) {\n var castedNode = node;\n var offsetKey = castedNode.getAttribute('data-offset-key');\n\n if (offsetKey) {\n return offsetKey;\n }\n\n for (var ii = 0; ii < castedNode.childNodes.length; ii++) {\n var childOffsetKey = getSelectionOffsetKeyForNode(castedNode.childNodes[ii]);\n\n if (childOffsetKey) {\n return childOffsetKey;\n }\n }\n }\n\n return null;\n}\n\nmodule.exports = getSelectionOffsetKeyForNode;","\"use strict\";\n\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 * @format\n * \n * @emails oncall+draft_js\n */\nfunction getWindowForNode(node) {\n if (!node || !node.ownerDocument || !node.ownerDocument.defaultView) {\n return window;\n }\n\n return node.ownerDocument.defaultView;\n}\n\nmodule.exports = getWindowForNode;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nfunction editOnSelect(editor) {\n if (editor._blockSelectEvents || editor._latestEditorState !== editor.props.editorState) {\n if (editor._blockSelectEvents) {\n var _editorState = editor.props.editorState;\n\n var selectionState = _editorState.getSelection();\n\n DraftJsDebugLogging.logBlockedSelectionEvent({\n // For now I don't think we need any other info\n anonymizedDom: 'N/A',\n extraParams: JSON.stringify({\n stacktrace: new Error().stack\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n }\n\n return;\n }\n\n var editorState = editor.props.editorState;\n var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n var updatedSelectionState = documentSelection.selectionState;\n\n if (updatedSelectionState !== editorState.getSelection()) {\n if (documentSelection.needsRecovery) {\n editorState = EditorState.forceSelection(editorState, updatedSelectionState);\n } else {\n editorState = EditorState.acceptSelection(editorState, updatedSelectionState);\n }\n\n editor.update(editorState);\n }\n}\n\nmodule.exports = editOnSelect;","/**\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';\n\nmodule.exports = {\n logBlockedSelectionEvent: function logBlockedSelectionEvent() {\n return null;\n },\n logSelectionStateFailure: function logSelectionStateFailure() {\n return null;\n }\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nfunction getContentEditableContainer(editor) {\n var editorNode = editor.editorContainer;\n !editorNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing editorNode') : invariant(false) : void 0;\n !isHTMLElement(editorNode.firstChild) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode.firstChild is not an HTMLElement') : invariant(false) : void 0;\n var htmlElement = editorNode.firstChild;\n return htmlElement;\n}\n\nmodule.exports = getContentEditableContainer;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\n\n\nfunction getDraftEditorSelection(editorState, root) {\n var selection = root.ownerDocument.defaultView.getSelection();\n var anchorNode = selection.anchorNode,\n anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode,\n focusOffset = selection.focusOffset,\n rangeCount = selection.rangeCount;\n\n if ( // No active selection.\n rangeCount === 0 || // No selection, ever. As in, the user hasn't selected anything since\n // opening the document.\n anchorNode == null || focusNode == null) {\n return {\n selectionState: editorState.getSelection().set('hasFocus', false),\n needsRecovery: false\n };\n }\n\n return getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n\nmodule.exports = getDraftEditorSelection;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\nfunction getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset) {\n var anchorIsTextNode = anchorNode.nodeType === Node.TEXT_NODE;\n var focusIsTextNode = focusNode.nodeType === Node.TEXT_NODE; // If the selection range lies only on text nodes, the task is simple.\n // Find the nearest offset-aware elements and use the\n // offset values supplied by the selection range.\n\n if (anchorIsTextNode && focusIsTextNode) {\n return {\n selectionState: getUpdatedSelectionState(editorState, nullthrows(findAncestorOffsetKey(anchorNode)), anchorOffset, nullthrows(findAncestorOffsetKey(focusNode)), focusOffset),\n needsRecovery: false\n };\n }\n\n var anchorPoint = null;\n var focusPoint = null;\n var needsRecovery = true; // An element is selected. Convert this selection range into leaf offset\n // keys and offset values for consumption at the component level. This\n // is common in Firefox, where select-all and triple click behavior leads\n // to entire elements being selected.\n //\n // Note that we use the `needsRecovery` parameter in the callback here. This\n // is because when certain elements are selected, the behavior for subsequent\n // cursor movement (e.g. via arrow keys) is uncertain and may not match\n // expectations at the component level. For example, if an entire
is\n // selected and the user presses the right arrow, Firefox keeps the selection\n // on the
. If we allow subsequent keypresses to insert characters\n // natively, they will be inserted into a browser-created text node to the\n // right of that
. This is obviously undesirable.\n //\n // With the `needsRecovery` flag, we inform the caller that it is responsible\n // for manually setting the selection state on the rendered document to\n // ensure proper selection state maintenance.\n\n if (anchorIsTextNode) {\n anchorPoint = {\n key: nullthrows(findAncestorOffsetKey(anchorNode)),\n offset: anchorOffset\n };\n focusPoint = getPointForNonTextNode(root, focusNode, focusOffset);\n } else if (focusIsTextNode) {\n focusPoint = {\n key: nullthrows(findAncestorOffsetKey(focusNode)),\n offset: focusOffset\n };\n anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n } else {\n anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n focusPoint = getPointForNonTextNode(root, focusNode, focusOffset); // If the selection is collapsed on an empty block, don't force recovery.\n // This way, on arrow key selection changes, the browser can move the\n // cursor from a non-zero offset on one block, through empty blocks,\n // to a matching non-zero offset on other text blocks.\n\n if (anchorNode === focusNode && anchorOffset === focusOffset) {\n needsRecovery = !!anchorNode.firstChild && anchorNode.firstChild.nodeName !== 'BR';\n }\n }\n\n return {\n selectionState: getUpdatedSelectionState(editorState, anchorPoint.key, anchorPoint.offset, focusPoint.key, focusPoint.offset),\n needsRecovery: needsRecovery\n };\n}\n/**\n * Identify the first leaf descendant for the given node.\n */\n\n\nfunction getFirstLeaf(node) {\n while (node.firstChild && ( // data-blocks has no offset\n isElement(node.firstChild) && node.firstChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.firstChild))) {\n node = node.firstChild;\n }\n\n return node;\n}\n/**\n * Identify the last leaf descendant for the given node.\n */\n\n\nfunction getLastLeaf(node) {\n while (node.lastChild && ( // data-blocks has no offset\n isElement(node.lastChild) && node.lastChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.lastChild))) {\n node = node.lastChild;\n }\n\n return node;\n}\n\nfunction getPointForNonTextNode(editorRoot, startNode, childOffset) {\n var node = startNode;\n var offsetKey = findAncestorOffsetKey(node);\n !(offsetKey != null || editorRoot && (editorRoot === node || editorRoot.firstChild === node)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown node in selection range.') : invariant(false) : void 0; // If the editorRoot is the selection, step downward into the content\n // wrapper.\n\n if (editorRoot === node) {\n node = node.firstChild;\n !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents node.') : invariant(false) : void 0;\n var castedNode = node; // assignment only added for flow :/\n // otherwise it throws in line 200 saying that node can be null or undefined\n\n node = castedNode;\n !(node.getAttribute('data-contents') === 'true') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents structure.') : invariant(false) : void 0;\n\n if (childOffset > 0) {\n childOffset = node.childNodes.length;\n }\n } // If the child offset is zero and we have an offset key, we're done.\n // If there's no offset key because the entire editor is selected,\n // find the leftmost (\"first\") leaf in the tree and use that as the offset\n // key.\n\n\n if (childOffset === 0) {\n var key = null;\n\n if (offsetKey != null) {\n key = offsetKey;\n } else {\n var firstLeaf = getFirstLeaf(node);\n key = nullthrows(getSelectionOffsetKeyForNode(firstLeaf));\n }\n\n return {\n key: key,\n offset: 0\n };\n }\n\n var nodeBeforeCursor = node.childNodes[childOffset - 1];\n var leafKey = null;\n var textLength = null;\n\n if (!getSelectionOffsetKeyForNode(nodeBeforeCursor)) {\n // Our target node may be a leaf or a text node, in which case we're\n // already where we want to be and can just use the child's length as\n // our offset.\n leafKey = nullthrows(offsetKey);\n textLength = getTextContentLength(nodeBeforeCursor);\n } else {\n // Otherwise, we'll look at the child to the left of the cursor and find\n // the last leaf node in its subtree.\n var lastLeaf = getLastLeaf(nodeBeforeCursor);\n leafKey = nullthrows(getSelectionOffsetKeyForNode(lastLeaf));\n textLength = getTextContentLength(lastLeaf);\n }\n\n return {\n key: leafKey,\n offset: textLength\n };\n}\n/**\n * Return the length of a node's textContent, regarding single newline\n * characters as zero-length. This allows us to avoid problems with identifying\n * the correct selection offset for empty blocks in IE, in which we\n * render newlines instead of break tags.\n */\n\n\nfunction getTextContentLength(node) {\n var textContent = node.textContent;\n return textContent === '\\n' ? 0 : textContent.length;\n}\n\nmodule.exports = getDraftEditorSelectionWithNodes;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nfunction getUpdatedSelectionState(editorState, anchorKey, anchorOffset, focusKey, focusOffset) {\n var selection = nullthrows(editorState.getSelection());\n\n if (!anchorKey || !focusKey) {\n // If we cannot make sense of the updated selection state, stick to the current one.\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line */\n console.warn('Invalid selection state.', arguments, editorState.toJS());\n }\n\n return selection;\n }\n\n var anchorPath = DraftOffsetKey.decode(anchorKey);\n var anchorBlockKey = anchorPath.blockKey;\n var anchorLeafBlockTree = editorState.getBlockTree(anchorBlockKey);\n var anchorLeaf = anchorLeafBlockTree && anchorLeafBlockTree.getIn([anchorPath.decoratorKey, 'leaves', anchorPath.leafKey]);\n var focusPath = DraftOffsetKey.decode(focusKey);\n var focusBlockKey = focusPath.blockKey;\n var focusLeafBlockTree = editorState.getBlockTree(focusBlockKey);\n var focusLeaf = focusLeafBlockTree && focusLeafBlockTree.getIn([focusPath.decoratorKey, 'leaves', focusPath.leafKey]);\n\n if (!anchorLeaf || !focusLeaf) {\n // If we cannot make sense of the updated selection state, stick to the current one.\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line */\n console.warn('Invalid selection state.', arguments, editorState.toJS());\n }\n\n return selection;\n }\n\n var anchorLeafStart = anchorLeaf.get('start');\n var focusLeafStart = focusLeaf.get('start');\n var anchorBlockOffset = anchorLeaf ? anchorLeafStart + anchorOffset : null;\n var focusBlockOffset = focusLeaf ? focusLeafStart + focusOffset : null;\n var areEqual = selection.getAnchorKey() === anchorBlockKey && selection.getAnchorOffset() === anchorBlockOffset && selection.getFocusKey() === focusBlockKey && selection.getFocusOffset() === focusBlockOffset;\n\n if (areEqual) {\n return selection;\n }\n\n var isBackward = false;\n\n if (anchorBlockKey === focusBlockKey) {\n var anchorLeafEnd = anchorLeaf.get('end');\n var focusLeafEnd = focusLeaf.get('end');\n\n if (focusLeafStart === anchorLeafStart && focusLeafEnd === anchorLeafEnd) {\n isBackward = focusOffset < anchorOffset;\n } else {\n isBackward = focusLeafStart < anchorLeafStart;\n }\n } else {\n var startKey = editorState.getCurrentContent().getBlockMap().keySeq().skipUntil(function (v) {\n return v === anchorBlockKey || v === focusBlockKey;\n }).first();\n isBackward = startKey === focusBlockKey;\n }\n\n return selection.merge({\n anchorKey: anchorBlockKey,\n anchorOffset: anchorBlockOffset,\n focusKey: focusBlockKey,\n focusOffset: focusBlockOffset,\n isBackward: isBackward\n });\n}\n\nmodule.exports = getUpdatedSelectionState;","/**\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 * Provides utilities for handling draftjs keys.\n *\n * @emails oncall+draft_js\n * \n * @format\n */\n'use strict';\n\nfunction notEmptyKey(key) {\n return key != null && key != '';\n}\n\nmodule.exports = {\n notEmptyKey: notEmptyKey\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\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 DraftEditorTextNode = require(\"./DraftEditorTextNode.react\");\n\nvar React = require(\"react\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar setDraftEditorSelection = require(\"./setDraftEditorSelection\").setDraftEditorSelection;\n\n/**\n * All leaf nodes in the editor are spans with single text nodes. Leaf\n * elements are styled based on the merging of an optional custom style map\n * and a default style map.\n *\n * `DraftEditorLeaf` also provides a wrapper for calling into the imperative\n * DOM Selection API. In this way, top-level components can declaratively\n * maintain the selection state.\n */\nvar DraftEditorLeaf =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(DraftEditorLeaf, _React$Component);\n\n function DraftEditorLeaf() {\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 = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"leaf\", void 0);\n\n return _this;\n }\n\n var _proto = DraftEditorLeaf.prototype;\n\n _proto._setSelection = function _setSelection() {\n var selection = this.props.selection; // If selection state is irrelevant to the parent block, no-op.\n\n if (selection == null || !selection.getHasFocus()) {\n return;\n }\n\n var _this$props = this.props,\n block = _this$props.block,\n start = _this$props.start,\n text = _this$props.text;\n var blockKey = block.getKey();\n var end = start + text.length;\n\n if (!selection.hasEdgeWithin(blockKey, start, end)) {\n return;\n } // Determine the appropriate target node for selection. If the child\n // is not a text node, it is a
spacer. In this case, use the\n // itself as the selection target.\n\n\n var node = this.leaf;\n !node ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing node') : invariant(false) : void 0;\n var child = node.firstChild;\n !child ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing child') : invariant(false) : void 0;\n var targetNode;\n\n if (child.nodeType === Node.TEXT_NODE) {\n targetNode = child;\n } else if (isHTMLBRElement(child)) {\n targetNode = node;\n } else {\n targetNode = child.firstChild;\n !targetNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing targetNode') : invariant(false) : void 0;\n }\n\n setDraftEditorSelection(selection, targetNode, blockKey, start, end);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var leafNode = this.leaf;\n !leafNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing leafNode') : invariant(false) : void 0;\n var shouldUpdate = leafNode.textContent !== nextProps.text || nextProps.styleSet !== this.props.styleSet || nextProps.forceSelection;\n return shouldUpdate;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._setSelection();\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._setSelection();\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var block = this.props.block;\n var text = this.props.text; // If the leaf is at the end of its block and ends in a soft newline, append\n // an extra line feed character. Browsers collapse trailing newline\n // characters, which leaves the cursor in the wrong place after a\n // shift+enter. The extra character repairs this.\n\n if (text.endsWith('\\n') && this.props.isLast) {\n text += '\\n';\n }\n\n var _this$props2 = this.props,\n customStyleMap = _this$props2.customStyleMap,\n customStyleFn = _this$props2.customStyleFn,\n offsetKey = _this$props2.offsetKey,\n styleSet = _this$props2.styleSet;\n var styleObj = styleSet.reduce(function (map, styleName) {\n var mergedStyles = {};\n var style = customStyleMap[styleName];\n\n if (style !== undefined && map.textDecoration !== style.textDecoration) {\n // .trim() is necessary for IE9/10/11 and Edge\n mergedStyles.textDecoration = [map.textDecoration, style.textDecoration].join(' ').trim();\n }\n\n return _assign(map, style, mergedStyles);\n }, {});\n\n if (customStyleFn) {\n var newStyles = customStyleFn(styleSet, block);\n styleObj = _assign(styleObj, newStyles);\n }\n\n return React.createElement(\"span\", {\n \"data-offset-key\": offsetKey,\n ref: function ref(_ref) {\n return _this2.leaf = _ref;\n },\n style: styleObj\n }, React.createElement(DraftEditorTextNode, null, text));\n };\n\n return DraftEditorLeaf;\n}(React.Component);\n\nmodule.exports = DraftEditorLeaf;","\"use strict\";\n\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 * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLBRElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'BR';\n}\n\nmodule.exports = isHTMLBRElement;","/**\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';\n\nmodule.exports = {\n initODS: function initODS() {},\n handleExtensionCausedError: function handleExtensionCausedError() {}\n};","\"use strict\";\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 * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc)\n/*?DOMElement*/\n{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n if (typeof doc === 'undefined') {\n return null;\n }\n\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;","\"use strict\";\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 * @typechecks\n */\nvar getElementRect = require(\"./getElementRect\");\n/**\n * Gets an element's position in pixels relative to the viewport. The returned\n * object represents the position of the element's top left corner.\n *\n * @param {DOMElement} element\n * @return {object}\n */\n\n\nfunction getElementPosition(element) {\n var rect = getElementRect(element);\n return {\n x: rect.left,\n y: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n}\n\nmodule.exports = getElementPosition;","\"use strict\";\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 * @typechecks\n */\nfunction getViewportWidth() {\n var width;\n\n if (document.documentElement) {\n width = document.documentElement.clientWidth;\n }\n\n if (!width && document.body) {\n width = document.body.clientWidth;\n }\n\n return width || 0;\n}\n\nfunction getViewportHeight() {\n var height;\n\n if (document.documentElement) {\n height = document.documentElement.clientHeight;\n }\n\n if (!height && document.body) {\n height = document.body.clientHeight;\n }\n\n return height || 0;\n}\n/**\n * Gets the viewport dimensions including any scrollbars.\n */\n\n\nfunction getViewportDimensions() {\n return {\n width: window.innerWidth || getViewportWidth(),\n height: window.innerHeight || getViewportHeight()\n };\n}\n/**\n * Gets the viewport dimensions excluding any scrollbars.\n */\n\n\ngetViewportDimensions.withoutScrollbars = function () {\n return {\n width: getViewportWidth(),\n height: getViewportHeight()\n };\n};\n\nmodule.exports = getViewportDimensions;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _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 _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\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 DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar SCROLL_BUFFER = 10;\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * The default block renderer for a `DraftEditor` component.\n *\n * A `DraftEditorBlock` is able to render a given `ContentBlock` to its\n * appropriate decorator and inline style components.\n */\n\n\nvar DraftEditorBlock =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(DraftEditorBlock, _React$Component);\n\n function DraftEditorBlock() {\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 = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n return _this;\n }\n\n var _proto = DraftEditorBlock.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return this.props.block !== nextProps.block || this.props.tree !== nextProps.tree || this.props.direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection;\n }\n /**\n * When a block is mounted and overlaps the selection state, we need to make\n * sure that the cursor is visible to match native behavior. This may not\n * be the case if the user has pressed `RETURN` or pasted some content, since\n * programmatically creating these new blocks and setting the DOM selection\n * will miss out on the browser natively scrolling to that position.\n *\n * To replicate native behavior, if the block overlaps the selection state\n * on mount, force the scroll position. Check the scroll state of the scroll\n * parent, and adjust it to align the entire block to the bottom of the\n * scroll parent.\n */\n ;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.preventScroll) {\n return;\n }\n\n var selection = this.props.selection;\n var endKey = selection.getEndKey();\n\n if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n return;\n }\n\n var blockNode = this._node;\n\n if (blockNode == null) {\n return;\n }\n\n var scrollParent = Style.getScrollParent(blockNode);\n var scrollPosition = getScrollPosition(scrollParent);\n var scrollDelta;\n\n if (scrollParent === window) {\n var nodePosition = getElementPosition(blockNode);\n var nodeBottom = nodePosition.y + nodePosition.height;\n var viewportHeight = getViewportDimensions().height;\n scrollDelta = nodeBottom - viewportHeight;\n\n if (scrollDelta > 0) {\n window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n }\n } else {\n !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n var blockBottom = blockNode.offsetHeight + blockNode.offsetTop;\n var pOffset = scrollParent.offsetTop + scrollParent.offsetHeight;\n var scrollBottom = pOffset + scrollPosition.y;\n scrollDelta = blockBottom - scrollBottom;\n\n if (scrollDelta > 0) {\n Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n }\n }\n };\n\n _proto._renderChildren = function _renderChildren() {\n var _this2 = this;\n\n var block = this.props.block;\n var blockKey = block.getKey();\n var text = block.getText();\n var lastLeafSet = this.props.tree.size - 1;\n var hasSelection = isBlockOnSelectionEdge(this.props.selection, blockKey);\n return this.props.tree.map(function (leafSet, ii) {\n var leavesForLeafSet = leafSet.get('leaves'); // T44088704\n\n if (leavesForLeafSet.size === 0) {\n return null;\n }\n\n var lastLeaf = leavesForLeafSet.size - 1;\n var leaves = leavesForLeafSet.map(function (leaf, jj) {\n var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n var start = leaf.get('start');\n var end = leaf.get('end');\n return React.createElement(DraftEditorLeaf, {\n key: offsetKey,\n offsetKey: offsetKey,\n block: block,\n start: start,\n selection: hasSelection ? _this2.props.selection : null,\n forceSelection: _this2.props.forceSelection,\n text: text.slice(start, end),\n styleSet: block.getInlineStyleAt(start),\n customStyleMap: _this2.props.customStyleMap,\n customStyleFn: _this2.props.customStyleFn,\n isLast: ii === lastLeafSet && jj === lastLeaf\n });\n }).toArray();\n var decoratorKey = leafSet.get('decoratorKey');\n\n if (decoratorKey == null) {\n return leaves;\n }\n\n if (!_this2.props.decorator) {\n return leaves;\n }\n\n var decorator = nullthrows(_this2.props.decorator);\n var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n\n if (!DecoratorComponent) {\n return leaves;\n }\n\n var decoratorProps = decorator.getPropsForKey(decoratorKey);\n var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, ii, 0);\n var start = leavesForLeafSet.first().get('start');\n var end = leavesForLeafSet.last().get('end');\n var decoratedText = text.slice(start, end);\n var entityKey = block.getEntityAt(leafSet.get('start')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), _this2.props.direction);\n var commonProps = {\n contentState: _this2.props.contentState,\n decoratedText: decoratedText,\n dir: dir,\n start: start,\n end: end,\n blockKey: blockKey,\n entityKey: entityKey,\n offsetKey: decoratorOffsetKey\n };\n return React.createElement(DecoratorComponent, _extends({}, decoratorProps, commonProps, {\n key: decoratorOffsetKey\n }), leaves);\n }).toArray();\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n direction = _this$props.direction,\n offsetKey = _this$props.offsetKey;\n var className = cx({\n 'public/DraftStyleDefault/block': true,\n 'public/DraftStyleDefault/ltr': direction === 'LTR',\n 'public/DraftStyleDefault/rtl': direction === 'RTL'\n });\n return React.createElement(\"div\", {\n \"data-offset-key\": offsetKey,\n className: className,\n ref: function ref(_ref) {\n return _this3._node = _ref;\n }\n }, this._renderChildren());\n };\n\n return DraftEditorBlock;\n}(React.Component);\n\nmodule.exports = DraftEditorBlock;","\"use strict\";\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 * @typechecks\n */\nvar PhotosMimeType = require(\"./PhotosMimeType\");\n\nvar createArrayFromMixed = require(\"./createArrayFromMixed\");\n\nvar emptyFunction = require(\"./emptyFunction\");\n\nvar CR_LF_REGEX = new RegExp(\"\\r\\n\", 'g');\nvar LF_ONLY = \"\\n\";\nvar RICH_TEXT_TYPES = {\n 'text/rtf': 1,\n 'text/html': 1\n};\n/**\n * If DataTransferItem is a file then return the Blob of data.\n *\n * @param {object} item\n * @return {?blob}\n */\n\nfunction getFileFromDataTransfer(item) {\n if (item.kind == 'file') {\n return item.getAsFile();\n }\n}\n\nvar DataTransfer =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {object} data\n */\n function DataTransfer(data) {\n this.data = data; // Types could be DOMStringList or array\n\n this.types = data.types ? createArrayFromMixed(data.types) : [];\n }\n /**\n * Is this likely to be a rich text data transfer?\n *\n * @return {boolean}\n */\n\n\n var _proto = DataTransfer.prototype;\n\n _proto.isRichText = function isRichText() {\n // If HTML is available, treat this data as rich text. This way, we avoid\n // using a pasted image if it is packaged with HTML -- this may occur with\n // pastes from MS Word, for example. However this is only rich text if\n // there's accompanying text.\n if (this.getHTML() && this.getText()) {\n return true;\n } // When an image is copied from a preview window, you end up with two\n // DataTransferItems one of which is a file's metadata as text. Skip those.\n\n\n if (this.isImage()) {\n return false;\n }\n\n return this.types.some(function (type) {\n return RICH_TEXT_TYPES[type];\n });\n };\n /**\n * Get raw text.\n *\n * @return {?string}\n */\n\n\n _proto.getText = function getText() {\n var text;\n\n if (this.data.getData) {\n if (!this.types.length) {\n text = this.data.getData('Text');\n } else if (this.types.indexOf('text/plain') != -1) {\n text = this.data.getData('text/plain');\n }\n }\n\n return text ? text.replace(CR_LF_REGEX, LF_ONLY) : null;\n };\n /**\n * Get HTML paste data\n *\n * @return {?string}\n */\n\n\n _proto.getHTML = function getHTML() {\n if (this.data.getData) {\n if (!this.types.length) {\n return this.data.getData('Text');\n } else if (this.types.indexOf('text/html') != -1) {\n return this.data.getData('text/html');\n }\n }\n };\n /**\n * Is this a link data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isLink = function isLink() {\n return this.types.some(function (type) {\n return type.indexOf('Url') != -1 || type.indexOf('text/uri-list') != -1 || type.indexOf('text/x-moz-url');\n });\n };\n /**\n * Get a link url.\n *\n * @return {?string}\n */\n\n\n _proto.getLink = function getLink() {\n if (this.data.getData) {\n if (this.types.indexOf('text/x-moz-url') != -1) {\n var url = this.data.getData('text/x-moz-url').split('\\n');\n return url[0];\n }\n\n return this.types.indexOf('text/uri-list') != -1 ? this.data.getData('text/uri-list') : this.data.getData('url');\n }\n\n return null;\n };\n /**\n * Is this an image data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isImage = function isImage() {\n var isImage = this.types.some(function (type) {\n // Firefox will have a type of application/x-moz-file for images during\n // dragging\n return type.indexOf('application/x-moz-file') != -1;\n });\n\n if (isImage) {\n return true;\n }\n\n var items = this.getFiles();\n\n for (var i = 0; i < items.length; i++) {\n var type = items[i].type;\n\n if (!PhotosMimeType.isImage(type)) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.getCount = function getCount() {\n if (this.data.hasOwnProperty('items')) {\n return this.data.items.length;\n } else if (this.data.hasOwnProperty('mozItemCount')) {\n return this.data.mozItemCount;\n } else if (this.data.files) {\n return this.data.files.length;\n }\n\n return null;\n };\n /**\n * Get files.\n *\n * @return {array}\n */\n\n\n _proto.getFiles = function getFiles() {\n if (this.data.items) {\n // createArrayFromMixed doesn't properly handle DataTransferItemLists.\n return Array.prototype.slice.call(this.data.items).map(getFileFromDataTransfer).filter(emptyFunction.thatReturnsArgument);\n } else if (this.data.files) {\n return Array.prototype.slice.call(this.data.files);\n } else {\n return [];\n }\n };\n /**\n * Are there any files to fetch?\n *\n * @return {boolean}\n */\n\n\n _proto.hasFiles = function hasFiles() {\n return this.getFiles().length > 0;\n };\n\n return DataTransfer;\n}();\n\nmodule.exports = DataTransfer;","\"use strict\";\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 */\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar TEXT_CLIPPING_REGEX = /\\.textClipping$/;\nvar TEXT_TYPES = {\n 'text/plain': true,\n 'text/html': true,\n 'text/rtf': true\n}; // Somewhat arbitrary upper bound on text size. Let's not lock up the browser.\n\nvar TEXT_SIZE_UPPER_BOUND = 5000;\n/**\n * Extract the text content from a file list.\n */\n\nfunction getTextContentFromFiles(files, callback) {\n var readCount = 0;\n var results = [];\n files.forEach(function (\n /*blob*/\n file) {\n readFile(file, function (\n /*string*/\n text) {\n readCount++;\n text && results.push(text.slice(0, TEXT_SIZE_UPPER_BOUND));\n\n if (readCount == files.length) {\n callback(results.join('\\r'));\n }\n });\n });\n}\n/**\n * todo isaac: Do work to turn html/rtf into a content fragment.\n */\n\n\nfunction readFile(file, callback) {\n if (!global.FileReader || file.type && !(file.type in TEXT_TYPES)) {\n callback('');\n return;\n }\n\n if (file.type === '') {\n var _contents = ''; // Special-case text clippings, which have an empty type but include\n // `.textClipping` in the file name. `readAsText` results in an empty\n // string for text clippings, so we force the file name to serve\n // as the text value for the file.\n\n if (TEXT_CLIPPING_REGEX.test(file.name)) {\n _contents = file.name.replace(TEXT_CLIPPING_REGEX, '');\n }\n\n callback(_contents);\n return;\n }\n\n var reader = new FileReader();\n\n reader.onload = function () {\n var result = reader.result;\n !(typeof result === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'We should be calling \"FileReader.readAsText\" which returns a string') : invariant(false) : void 0;\n callback(result);\n };\n\n reader.onerror = function () {\n callback('');\n };\n\n reader.readAsText(file);\n}\n\nmodule.exports = getTextContentFromFiles;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nfunction getFragmentFromSelection(editorState) {\n var selectionState = editorState.getSelection();\n\n if (selectionState.isCollapsed()) {\n return null;\n }\n\n return getContentStateFragment(editorState.getCurrentContent(), selectionState);\n}\n\nmodule.exports = getFragmentFromSelection;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the preceding\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainBackspace(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var content = strategyState.getCurrentContent();\n var key = selection.getAnchorKey();\n var offset = selection.getAnchorOffset();\n var charBehind = content.getBlockForKey(key).getText()[offset - 1];\n return moveSelectionBackward(strategyState, charBehind ? UnicodeUtils.getUTF16Length(charBehind, 0) : 1);\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n var selection = editorState.getSelection();\n return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'backspace-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainBackspace;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isChrome = UserAgent.isBrowser('Chrome'); // In Chrome, the client rects will include the entire bounds of all nodes that\n// begin (have a start tag) within the selection, even if the selection does\n// not overlap the entire node. To resolve this, we split the range at each\n// start tag and join the client rects together.\n// https://code.google.com/p/chromium/issues/detail?id=324437\n\n/* eslint-disable consistent-return */\n\nfunction getRangeClientRectsChrome(range) {\n var tempRange = range.cloneRange();\n var clientRects = [];\n\n for (var ancestor = range.endContainer; ancestor != null; ancestor = ancestor.parentNode) {\n // If we've climbed up to the common ancestor, we can now use the\n // original start point and stop climbing the tree.\n var atCommonAncestor = ancestor === range.commonAncestorContainer;\n\n if (atCommonAncestor) {\n tempRange.setStart(range.startContainer, range.startOffset);\n } else {\n tempRange.setStart(tempRange.endContainer, 0);\n }\n\n var rects = Array.from(tempRange.getClientRects());\n clientRects.push(rects);\n\n if (atCommonAncestor) {\n var _ref;\n\n clientRects.reverse();\n return (_ref = []).concat.apply(_ref, clientRects);\n }\n\n tempRange.setEndBefore(ancestor);\n }\n\n !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found an unexpected detached subtree when getting range client rects.') : invariant(false) : void 0;\n}\n/* eslint-enable consistent-return */\n\n/**\n * Like range.getClientRects() but normalizes for browser bugs.\n */\n\n\nvar getRangeClientRects = isChrome ? getRangeClientRectsChrome : function (range) {\n return Array.from(range.getClientRects());\n};\nmodule.exports = getRangeClientRects;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar TokenizeUtil = require(\"fbjs/lib/TokenizeUtil\");\n\nvar punctuation = TokenizeUtil.getPunctuation(); // The apostrophe and curly single quotes behave in a curious way: when\n// surrounded on both sides by word characters, they behave as word chars; when\n// either neighbor is punctuation or an end of the string, they behave as\n// punctuation.\n\nvar CHAMELEON_CHARS = \"['\\u2018\\u2019]\"; // Remove the underscore, which should count as part of the removable word. The\n// \"chameleon chars\" also count as punctuation in this regex.\n\nvar WHITESPACE_AND_PUNCTUATION = '\\\\s|(?![_])' + punctuation;\nvar DELETE_STRING = '^' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)';\nvar DELETE_REGEX = new RegExp(DELETE_STRING);\nvar BACKSPACE_STRING = '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '$';\nvar BACKSPACE_REGEX = new RegExp(BACKSPACE_STRING);\n\nfunction getRemovableWord(text, isBackward) {\n var matches = isBackward ? BACKSPACE_REGEX.exec(text) : DELETE_REGEX.exec(text);\n return matches ? matches[0] : text;\n}\n\nvar DraftRemovableWord = {\n getBackward: function getBackward(text) {\n return getRemovableWord(text, true);\n },\n getForward: function getForward(text) {\n return getRemovableWord(text, false);\n }\n};\nmodule.exports = DraftRemovableWord;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` forward within\n * the selected block. If the selection will go beyond the end of the block,\n * move focus to the start of the next block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionForward(editorState, maxDistance) {\n var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionForward should only be called with a collapsed SelectionState') : void 0;\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n var content = editorState.getCurrentContent();\n var focusKey = key;\n var focusOffset;\n var block = content.getBlockForKey(key);\n\n if (maxDistance > block.getText().length - offset) {\n focusKey = content.getKeyAfter(key);\n focusOffset = 0;\n } else {\n focusOffset = offset + maxDistance;\n }\n\n return selection.merge({\n focusKey: focusKey,\n focusOffset: focusOffset\n });\n}\n\nmodule.exports = moveSelectionForward;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _knownListItemDepthCl;\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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 CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar URI = require(\"fbjs/lib/URI\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar _require = require(\"immutable\"),\n List = _require.List,\n Map = _require.Map,\n OrderedSet = _require.OrderedSet;\n\nvar isHTMLAnchorElement = require(\"./isHTMLAnchorElement\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar isHTMLImageElement = require(\"./isHTMLImageElement\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar NBSP = ' ';\nvar SPACE = ' '; // used for replacing characters in HTML\n\nvar REGEX_CR = new RegExp('\\r', 'g');\nvar REGEX_LF = new RegExp('\\n', 'g');\nvar REGEX_LEADING_LF = new RegExp('^\\n', 'g');\nvar REGEX_NBSP = new RegExp(NBSP, 'g');\nvar REGEX_CARRIAGE = new RegExp(' ?', 'g');\nvar REGEX_ZWS = new RegExp('​?', 'g'); // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n\nvar boldValues = ['bold', 'bolder', '500', '600', '700', '800', '900'];\nvar notBoldValues = ['light', 'lighter', 'normal', '100', '200', '300', '400'];\nvar anchorAttr = ['className', 'href', 'rel', 'target', 'title'];\nvar imgAttr = ['alt', 'className', 'height', 'src', 'width'];\nvar knownListItemDepthClasses = (_knownListItemDepthCl = {}, _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth0'), 0), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth1'), 1), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth2'), 2), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth3'), 3), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth4'), 4), _knownListItemDepthCl);\nvar HTMLTagToRawInlineStyleMap = Map({\n b: 'BOLD',\n code: 'CODE',\n del: 'STRIKETHROUGH',\n em: 'ITALIC',\n i: 'ITALIC',\n s: 'STRIKETHROUGH',\n strike: 'STRIKETHROUGH',\n strong: 'BOLD',\n u: 'UNDERLINE',\n mark: 'HIGHLIGHT'\n});\n\n/**\n * Build a mapping from HTML tags to draftjs block types\n * out of a BlockRenderMap.\n *\n * The BlockTypeMap for the default BlockRenderMap looks like this:\n * Map({\n * h1: 'header-one',\n * h2: 'header-two',\n * h3: 'header-three',\n * h4: 'header-four',\n * h5: 'header-five',\n * h6: 'header-six',\n * blockquote: 'blockquote',\n * figure: 'atomic',\n * pre: ['code-block'],\n * div: 'unstyled',\n * p: 'unstyled',\n * li: ['ordered-list-item', 'unordered-list-item'],\n * })\n */\nvar buildBlockTypeMap = function buildBlockTypeMap(blockRenderMap) {\n var blockTypeMap = {};\n blockRenderMap.mapKeys(function (blockType, desc) {\n var elements = [desc.element];\n\n if (desc.aliasedElements !== undefined) {\n elements.push.apply(elements, desc.aliasedElements);\n }\n\n elements.forEach(function (element) {\n if (blockTypeMap[element] === undefined) {\n blockTypeMap[element] = blockType;\n } else if (typeof blockTypeMap[element] === 'string') {\n blockTypeMap[element] = [blockTypeMap[element], blockType];\n } else {\n blockTypeMap[element].push(blockType);\n }\n });\n });\n return Map(blockTypeMap);\n};\n\nvar detectInlineStyle = function detectInlineStyle(node) {\n if (isHTMLElement(node)) {\n var element = node; // Currently only used to detect preformatted inline code\n\n if (element.style.fontFamily.includes('monospace')) {\n return 'CODE';\n }\n }\n\n return null;\n};\n/**\n * If we're pasting from one DraftEditor to another we can check to see if\n * existing list item depth classes are being used and preserve this style\n */\n\n\nvar getListItemDepth = function getListItemDepth(node) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n Object.keys(knownListItemDepthClasses).some(function (depthClass) {\n if (node.classList.contains(depthClass)) {\n depth = knownListItemDepthClasses[depthClass];\n }\n });\n return depth;\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible link.\n */\n\n\nvar isValidAnchor = function isValidAnchor(node) {\n if (!isHTMLAnchorElement(node)) {\n return false;\n }\n\n var anchorNode = node;\n return !!(anchorNode.href && (anchorNode.protocol === 'http:' || anchorNode.protocol === 'https:' || anchorNode.protocol === 'mailto:' || anchorNode.protocol === 'tel:'));\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible image.\n */\n\n\nvar isValidImage = function isValidImage(node) {\n if (!isHTMLImageElement(node)) {\n return false;\n }\n\n var imageNode = node;\n return !!(imageNode.attributes.getNamedItem('src') && imageNode.attributes.getNamedItem('src').value);\n};\n/**\n * Try to guess the inline style of an HTML element based on its css\n * styles (font-weight, font-style and text-decoration).\n */\n\n\nvar styleFromNodeAttributes = function styleFromNodeAttributes(node, style) {\n if (!isHTMLElement(node)) {\n return style;\n }\n\n var htmlElement = node;\n var fontWeight = htmlElement.style.fontWeight;\n var fontStyle = htmlElement.style.fontStyle;\n var textDecoration = htmlElement.style.textDecoration;\n return style.withMutations(function (style) {\n if (boldValues.indexOf(fontWeight) >= 0) {\n style.add('BOLD');\n } else if (notBoldValues.indexOf(fontWeight) >= 0) {\n style.remove('BOLD');\n }\n\n if (fontStyle === 'italic') {\n style.add('ITALIC');\n } else if (fontStyle === 'normal') {\n style.remove('ITALIC');\n }\n\n if (textDecoration === 'underline') {\n style.add('UNDERLINE');\n }\n\n if (textDecoration === 'line-through') {\n style.add('STRIKETHROUGH');\n }\n\n if (textDecoration === 'none') {\n style.remove('UNDERLINE');\n style.remove('STRIKETHROUGH');\n }\n });\n};\n/**\n * Determine if a nodeName is a list type, 'ul' or 'ol'\n */\n\n\nvar isListNode = function isListNode(nodeName) {\n return nodeName === 'ul' || nodeName === 'ol';\n};\n/**\n * ContentBlockConfig is a mutable data structure that holds all\n * the information required to build a ContentBlock and an array of\n * all the child nodes (childConfigs).\n * It is being used a temporary data structure by the\n * ContentBlocksBuilder class.\n */\n\n\n/**\n * ContentBlocksBuilder builds a list of ContentBlocks and an Entity Map\n * out of one (or several) HTMLElement(s).\n *\n * The algorithm has two passes: first it builds a tree of ContentBlockConfigs\n * by walking through the HTML nodes and their children, then it walks the\n * ContentBlockConfigs tree to compute parents/siblings and create\n * the actual ContentBlocks.\n *\n * Typical usage is:\n * new ContentBlocksBuilder()\n * .addDOMNode(someHTMLNode)\n * .addDOMNode(someOtherHTMLNode)\n * .getContentBlocks();\n *\n */\nvar ContentBlocksBuilder =\n/*#__PURE__*/\nfunction () {\n // Most of the method in the class depend on the state of the content builder\n // (i.e. currentBlockType, currentDepth, currentEntity etc.). Though it may\n // be confusing at first, it made the code simpler than the alternative which\n // is to pass those values around in every call.\n // The following attributes are used to accumulate text and styles\n // as we are walking the HTML node tree.\n // Describes the future ContentState as a tree of content blocks\n // The content blocks generated from the blockConfigs\n // Entity map use to store links and images found in the HTML nodes\n // Map HTML tags to draftjs block types and disambiguation function\n function ContentBlocksBuilder(blockTypeMap, disambiguate) {\n _defineProperty(this, \"characterList\", List());\n\n _defineProperty(this, \"currentBlockType\", 'unstyled');\n\n _defineProperty(this, \"currentDepth\", 0);\n\n _defineProperty(this, \"currentEntity\", null);\n\n _defineProperty(this, \"currentText\", '');\n\n _defineProperty(this, \"wrapper\", null);\n\n _defineProperty(this, \"blockConfigs\", []);\n\n _defineProperty(this, \"contentBlocks\", []);\n\n _defineProperty(this, \"entityMap\", DraftEntity);\n\n _defineProperty(this, \"blockTypeMap\", void 0);\n\n _defineProperty(this, \"disambiguate\", void 0);\n\n this.clear();\n this.blockTypeMap = blockTypeMap;\n this.disambiguate = disambiguate;\n }\n /**\n * Clear the internal state of the ContentBlocksBuilder\n */\n\n\n var _proto = ContentBlocksBuilder.prototype;\n\n _proto.clear = function clear() {\n this.characterList = List();\n this.blockConfigs = [];\n this.currentBlockType = 'unstyled';\n this.currentDepth = 0;\n this.currentEntity = null;\n this.currentText = '';\n this.entityMap = DraftEntity;\n this.wrapper = null;\n this.contentBlocks = [];\n }\n /**\n * Add an HTMLElement to the ContentBlocksBuilder\n */\n ;\n\n _proto.addDOMNode = function addDOMNode(node) {\n var _this$blockConfigs;\n\n this.contentBlocks = [];\n this.currentDepth = 0; // Converts the HTML node to block config\n\n (_this$blockConfigs = this.blockConfigs).push.apply(_this$blockConfigs, this._toBlockConfigs([node], OrderedSet())); // There might be some left over text in the builder's\n // internal state, if so make a ContentBlock out of it.\n\n\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n this.blockConfigs.push(this._makeBlockConfig());\n } // for chaining\n\n\n return this;\n }\n /**\n * Return the ContentBlocks and the EntityMap that corresponds\n * to the previously added HTML nodes.\n */\n ;\n\n _proto.getContentBlocks = function getContentBlocks() {\n if (this.contentBlocks.length === 0) {\n if (experimentalTreeDataSupport) {\n this._toContentBlocks(this.blockConfigs);\n } else {\n this._toFlatContentBlocks(this.blockConfigs);\n }\n }\n\n return {\n contentBlocks: this.contentBlocks,\n entityMap: this.entityMap\n };\n } // ***********************************WARNING******************************\n // The methods below this line are private - don't call them directly.\n\n /**\n * Generate a new ContentBlockConfig out of the current internal state\n * of the builder, then clears the internal state.\n */\n ;\n\n _proto._makeBlockConfig = function _makeBlockConfig() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var key = config.key || generateRandomKey();\n\n var block = _objectSpread({\n key: key,\n type: this.currentBlockType,\n text: this.currentText,\n characterList: this.characterList,\n depth: this.currentDepth,\n parent: null,\n children: List(),\n prevSibling: null,\n nextSibling: null,\n childConfigs: []\n }, config);\n\n this.characterList = List();\n this.currentBlockType = 'unstyled';\n this.currentText = '';\n return block;\n }\n /**\n * Converts an array of HTML elements to a multi-root tree of content\n * block configs. Some text content may be left in the builders internal\n * state to enable chaining sucessive calls.\n */\n ;\n\n _proto._toBlockConfigs = function _toBlockConfigs(nodes, style) {\n var blockConfigs = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var nodeName = node.nodeName.toLowerCase();\n\n if (nodeName === 'body' || isListNode(nodeName)) {\n // body, ol and ul are 'block' type nodes so create a block config\n // with the text accumulated so far (if any)\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n blockConfigs.push(this._makeBlockConfig());\n } // body, ol and ul nodes are ignored, but their children are inlined in\n // the parent block config.\n\n\n var wasCurrentDepth = this.currentDepth;\n var wasWrapper = this.wrapper;\n\n if (isListNode(nodeName)) {\n this.wrapper = nodeName;\n\n if (isListNode(wasWrapper)) {\n this.currentDepth++;\n }\n }\n\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n this.currentDepth = wasCurrentDepth;\n this.wrapper = wasWrapper;\n continue;\n }\n\n var blockType = this.blockTypeMap.get(nodeName);\n\n if (blockType !== undefined) {\n // 'block' type node means we need to create a block config\n // with the text accumulated so far (if any)\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n blockConfigs.push(this._makeBlockConfig());\n }\n\n var _wasCurrentDepth = this.currentDepth;\n var _wasWrapper = this.wrapper;\n this.wrapper = nodeName === 'pre' ? 'pre' : this.wrapper;\n\n if (typeof blockType !== 'string') {\n blockType = this.disambiguate(nodeName, this.wrapper) || blockType[0] || 'unstyled';\n }\n\n if (!experimentalTreeDataSupport && isHTMLElement(node) && (blockType === 'unordered-list-item' || blockType === 'ordered-list-item')) {\n var htmlElement = node;\n this.currentDepth = getListItemDepth(htmlElement, this.currentDepth);\n }\n\n var key = generateRandomKey();\n\n var childConfigs = this._toBlockConfigs(Array.from(node.childNodes), style);\n\n this._trimCurrentText();\n\n blockConfigs.push(this._makeBlockConfig({\n key: key,\n childConfigs: childConfigs,\n type: blockType\n }));\n this.currentDepth = _wasCurrentDepth;\n this.wrapper = _wasWrapper;\n continue;\n }\n\n if (nodeName === '#text') {\n this._addTextNode(node, style);\n\n continue;\n }\n\n if (nodeName === 'br') {\n this._addBreakNode(node, style);\n\n continue;\n }\n\n if (isValidImage(node)) {\n this._addImgNode(node, style);\n\n continue;\n }\n\n if (isValidAnchor(node)) {\n this._addAnchorNode(node, blockConfigs, style);\n\n continue;\n }\n\n var newStyle = style;\n\n if (HTMLTagToRawInlineStyleMap.has(nodeName)) {\n newStyle = newStyle.add(HTMLTagToRawInlineStyleMap.get(nodeName));\n }\n\n newStyle = styleFromNodeAttributes(node, newStyle);\n var inlineStyle = detectInlineStyle(node);\n\n if (inlineStyle != null) {\n newStyle = newStyle.add(inlineStyle);\n }\n\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), newStyle));\n }\n\n return blockConfigs;\n }\n /**\n * Append a string of text to the internal buffer.\n */\n ;\n\n _proto._appendText = function _appendText(text, style) {\n var _this$characterList;\n\n this.currentText += text;\n var characterMetadata = CharacterMetadata.create({\n style: style,\n entity: this.currentEntity\n });\n this.characterList = (_this$characterList = this.characterList).push.apply(_this$characterList, Array(text.length).fill(characterMetadata));\n }\n /**\n * Trim the text in the internal buffer.\n */\n ;\n\n _proto._trimCurrentText = function _trimCurrentText() {\n var l = this.currentText.length;\n var begin = l - this.currentText.trimLeft().length;\n var end = this.currentText.trimRight().length; // We should not trim whitespaces for which an entity is defined.\n\n var entity = this.characterList.findEntry(function (characterMetadata) {\n return characterMetadata.getEntity() !== null;\n });\n begin = entity !== undefined ? Math.min(begin, entity[0]) : begin;\n entity = this.characterList.reverse().findEntry(function (characterMetadata) {\n return characterMetadata.getEntity() !== null;\n });\n end = entity !== undefined ? Math.max(end, l - entity[0]) : end;\n\n if (begin > end) {\n this.currentText = '';\n this.characterList = List();\n } else {\n this.currentText = this.currentText.slice(begin, end);\n this.characterList = this.characterList.slice(begin, end);\n }\n }\n /**\n * Add the content of an HTML text node to the internal state\n */\n ;\n\n _proto._addTextNode = function _addTextNode(node, style) {\n var text = node.textContent;\n var trimmedText = text.trim(); // If we are not in a pre block and the trimmed content is empty,\n // normalize to a single space.\n\n if (trimmedText === '' && this.wrapper !== 'pre') {\n text = ' ';\n }\n\n if (this.wrapper !== 'pre') {\n // Trim leading line feed, which is invisible in HTML\n text = text.replace(REGEX_LEADING_LF, ''); // Can't use empty string because MSWord\n\n text = text.replace(REGEX_LF, SPACE);\n }\n\n this._appendText(text, style);\n };\n\n _proto._addBreakNode = function _addBreakNode(node, style) {\n if (!isHTMLBRElement(node)) {\n return;\n }\n\n this._appendText('\\n', style);\n }\n /**\n * Add the content of an HTML img node to the internal state\n */\n ;\n\n _proto._addImgNode = function _addImgNode(node, style) {\n if (!isHTMLImageElement(node)) {\n return;\n }\n\n var image = node;\n var entityConfig = {};\n imgAttr.forEach(function (attr) {\n var imageAttribute = image.getAttribute(attr);\n\n if (imageAttribute) {\n entityConfig[attr] = imageAttribute;\n }\n }); // TODO: T15530363 update this when we remove DraftEntity entirely\n\n this.currentEntity = this.entityMap.__create('IMAGE', 'IMMUTABLE', entityConfig); // The child text node cannot just have a space or return as content (since\n // we strip those out), unless the image is for presentation only.\n // See https://github.com/facebook/draft-js/issues/231 for some context.\n\n if (gkx('draftjs_fix_paste_for_img')) {\n if (image.getAttribute('role') !== 'presentation') {\n this._appendText(\"\\uD83D\\uDCF7\", style);\n }\n } else {\n this._appendText(\"\\uD83D\\uDCF7\", style);\n }\n\n this.currentEntity = null;\n }\n /**\n * Add the content of an HTML 'a' node to the internal state. Child nodes\n * (if any) are converted to Block Configs and appended to the provided\n * blockConfig array.\n */\n ;\n\n _proto._addAnchorNode = function _addAnchorNode(node, blockConfigs, style) {\n // The check has already been made by isValidAnchor but\n // we have to do it again to keep flow happy.\n if (!isHTMLAnchorElement(node)) {\n return;\n }\n\n var anchor = node;\n var entityConfig = {};\n anchorAttr.forEach(function (attr) {\n var anchorAttribute = anchor.getAttribute(attr);\n\n if (anchorAttribute) {\n entityConfig[attr] = anchorAttribute;\n }\n });\n entityConfig.url = new URI(anchor.href).toString(); // TODO: T15530363 update this when we remove DraftEntity completely\n\n this.currentEntity = this.entityMap.__create('LINK', 'MUTABLE', entityConfig || {});\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n this.currentEntity = null;\n }\n /**\n * Walk the BlockConfig tree, compute parent/children/siblings,\n * and generate the corresponding ContentBlockNode\n */\n ;\n\n _proto._toContentBlocks = function _toContentBlocks(blockConfigs) {\n var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var l = blockConfigs.length - 1;\n\n for (var i = 0; i <= l; i++) {\n var config = blockConfigs[i];\n config.parent = parent;\n config.prevSibling = i > 0 ? blockConfigs[i - 1].key : null;\n config.nextSibling = i < l ? blockConfigs[i + 1].key : null;\n config.children = List(config.childConfigs.map(function (child) {\n return child.key;\n }));\n this.contentBlocks.push(new ContentBlockNode(_objectSpread({}, config)));\n\n this._toContentBlocks(config.childConfigs, config.key);\n }\n }\n /**\n * Remove 'useless' container nodes from the block config hierarchy, by\n * replacing them with their children.\n */\n ;\n\n _proto._hoistContainersInBlockConfigs = function _hoistContainersInBlockConfigs(blockConfigs) {\n var _this = this;\n\n var hoisted = List(blockConfigs).flatMap(function (blockConfig) {\n // Don't mess with useful blocks\n if (blockConfig.type !== 'unstyled' || blockConfig.text !== '') {\n return [blockConfig];\n }\n\n return _this._hoistContainersInBlockConfigs(blockConfig.childConfigs);\n });\n return hoisted;\n } // ***********************************************************************\n // The two methods below are used for backward compatibility when\n // experimentalTreeDataSupport is disabled.\n\n /**\n * Same as _toContentBlocks but replaces nested blocks by their\n * text content.\n */\n ;\n\n _proto._toFlatContentBlocks = function _toFlatContentBlocks(blockConfigs) {\n var _this2 = this;\n\n var cleanConfigs = this._hoistContainersInBlockConfigs(blockConfigs);\n\n cleanConfigs.forEach(function (config) {\n var _this2$_extractTextFr = _this2._extractTextFromBlockConfigs(config.childConfigs),\n text = _this2$_extractTextFr.text,\n characterList = _this2$_extractTextFr.characterList;\n\n _this2.contentBlocks.push(new ContentBlock(_objectSpread({}, config, {\n text: config.text + text,\n characterList: config.characterList.concat(characterList)\n })));\n });\n }\n /**\n * Extract the text and the associated inline styles form an\n * array of content block configs.\n */\n ;\n\n _proto._extractTextFromBlockConfigs = function _extractTextFromBlockConfigs(blockConfigs) {\n var l = blockConfigs.length - 1;\n var text = '';\n var characterList = List();\n\n for (var i = 0; i <= l; i++) {\n var config = blockConfigs[i];\n text += config.text;\n characterList = characterList.concat(config.characterList);\n\n if (text !== '' && config.type !== 'unstyled') {\n text += '\\n';\n characterList = characterList.push(characterList.last());\n }\n\n var children = this._extractTextFromBlockConfigs(config.childConfigs);\n\n text += children.text;\n characterList = characterList.concat(children.characterList);\n }\n\n return {\n text: text,\n characterList: characterList\n };\n };\n\n return ContentBlocksBuilder;\n}();\n/**\n * Converts an HTML string to an array of ContentBlocks and an EntityMap\n * suitable to initialize the internal state of a Draftjs component.\n */\n\n\nvar convertFromHTMLToContentBlocks = function convertFromHTMLToContentBlocks(html) {\n var DOMBuilder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getSafeBodyFromHTML;\n var blockRenderMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DefaultDraftBlockRenderMap;\n // Be ABSOLUTELY SURE that the dom builder you pass here won't execute\n // arbitrary code in whatever environment you're running this in. For an\n // example of how we try to do this in-browser, see getSafeBodyFromHTML.\n // Remove funky characters from the HTML string\n html = html.trim().replace(REGEX_CR, '').replace(REGEX_NBSP, SPACE).replace(REGEX_CARRIAGE, '').replace(REGEX_ZWS, ''); // Build a DOM tree out of the HTML string\n\n var safeBody = DOMBuilder(html);\n\n if (!safeBody) {\n return null;\n } // Build a BlockTypeMap out of the BlockRenderMap\n\n\n var blockTypeMap = buildBlockTypeMap(blockRenderMap); // Select the proper block type for the cases where the blockRenderMap\n // uses multiple block types for the same html tag.\n\n var disambiguate = function disambiguate(tag, wrapper) {\n if (tag === 'li') {\n return wrapper === 'ol' ? 'ordered-list-item' : 'unordered-list-item';\n }\n\n return null;\n };\n\n return new ContentBlocksBuilder(blockTypeMap, disambiguate).addDOMNode(safeBody).getContentBlocks();\n};\n\nmodule.exports = convertFromHTMLToContentBlocks;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isOldIE = UserAgent.isBrowser('IE <= 9'); // Provides a dom node that will not execute scripts\n// https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument\n// https://developer.mozilla.org/en-US/Add-ons/Code_snippets/HTML_to_DOM\n\nfunction getSafeBodyFromHTML(html) {\n var doc;\n var root = null; // Provides a safe context\n\n if (!isOldIE && document.implementation && document.implementation.createHTMLDocument) {\n doc = document.implementation.createHTMLDocument('foo');\n !doc.documentElement ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing doc.documentElement') : invariant(false) : void 0;\n doc.documentElement.innerHTML = html;\n root = doc.getElementsByTagName('body')[0];\n }\n\n return root;\n}\n\nmodule.exports = getSafeBodyFromHTML;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar adjustBlockDepthForContentState = require(\"./adjustBlockDepthForContentState\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar RichTextEditorUtil = {\n currentBlockContainsLink: function currentBlockContainsLink(editorState) {\n var selection = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var entityMap = contentState.getEntityMap();\n return contentState.getBlockForKey(selection.getAnchorKey()).getCharacterList().slice(selection.getStartOffset(), selection.getEndOffset()).some(function (v) {\n var entity = v.getEntity();\n return !!entity && entityMap.__get(entity).getType() === 'LINK';\n });\n },\n getCurrentBlockType: function getCurrentBlockType(editorState) {\n var selection = editorState.getSelection();\n return editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType();\n },\n getDataObjectForLinkURL: function getDataObjectForLinkURL(uri) {\n return {\n url: uri.toString()\n };\n },\n handleKeyCommand: function handleKeyCommand(editorState, command, eventTimeStamp) {\n switch (command) {\n case 'bold':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'BOLD');\n\n case 'italic':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'ITALIC');\n\n case 'underline':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'UNDERLINE');\n\n case 'code':\n return RichTextEditorUtil.toggleCode(editorState);\n\n case 'backspace':\n case 'backspace-word':\n case 'backspace-to-start-of-line':\n return RichTextEditorUtil.onBackspace(editorState);\n\n case 'delete':\n case 'delete-word':\n case 'delete-to-end-of-block':\n return RichTextEditorUtil.onDelete(editorState);\n\n default:\n // they may have custom editor commands; ignore those\n return null;\n }\n },\n insertSoftNewline: function insertSoftNewline(editorState) {\n var contentState = DraftModifier.insertText(editorState.getCurrentContent(), editorState.getSelection(), '\\n', editorState.getCurrentInlineStyle(), null);\n var newEditorState = EditorState.push(editorState, contentState, 'insert-characters');\n return EditorState.forceSelection(newEditorState, contentState.getSelectionAfter());\n },\n\n /**\n * For collapsed selections at the start of styled blocks, backspace should\n * just remove the existing style.\n */\n onBackspace: function onBackspace(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed() || selection.getAnchorOffset() || selection.getFocusOffset()) {\n return null;\n } // First, try to remove a preceding atomic block.\n\n\n var content = editorState.getCurrentContent();\n var startKey = selection.getStartKey();\n var blockBefore = content.getBlockBefore(startKey);\n\n if (blockBefore && blockBefore.getType() === 'atomic') {\n var blockMap = content.getBlockMap()[\"delete\"](blockBefore.getKey());\n var withoutAtomicBlock = content.merge({\n blockMap: blockMap,\n selectionAfter: selection\n });\n\n if (withoutAtomicBlock !== content) {\n return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n }\n } // If that doesn't succeed, try to remove the current block style.\n\n\n var withoutBlockStyle = RichTextEditorUtil.tryToRemoveBlockStyle(editorState);\n\n if (withoutBlockStyle) {\n return EditorState.push(editorState, withoutBlockStyle, 'change-block-type');\n }\n\n return null;\n },\n onDelete: function onDelete(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed()) {\n return null;\n }\n\n var content = editorState.getCurrentContent();\n var startKey = selection.getStartKey();\n var block = content.getBlockForKey(startKey);\n var length = block.getLength(); // The cursor is somewhere within the text. Behave normally.\n\n if (selection.getStartOffset() < length) {\n return null;\n }\n\n var blockAfter = content.getBlockAfter(startKey);\n\n if (!blockAfter || blockAfter.getType() !== 'atomic') {\n return null;\n }\n\n var atomicBlockTarget = selection.merge({\n focusKey: blockAfter.getKey(),\n focusOffset: blockAfter.getLength()\n });\n var withoutAtomicBlock = DraftModifier.removeRange(content, atomicBlockTarget, 'forward');\n\n if (withoutAtomicBlock !== content) {\n return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n }\n\n return null;\n },\n onTab: function onTab(event, editorState, maxDepth) {\n var selection = editorState.getSelection();\n var key = selection.getAnchorKey();\n\n if (key !== selection.getFocusKey()) {\n return editorState;\n }\n\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(key);\n var type = block.getType();\n\n if (type !== 'unordered-list-item' && type !== 'ordered-list-item') {\n return editorState;\n }\n\n event.preventDefault();\n var depth = block.getDepth();\n\n if (!event.shiftKey && depth === maxDepth) {\n return editorState;\n }\n\n var withAdjustment = adjustBlockDepthForContentState(content, selection, event.shiftKey ? -1 : 1, maxDepth);\n return EditorState.push(editorState, withAdjustment, 'adjust-depth');\n },\n toggleBlockType: function toggleBlockType(editorState, blockType) {\n var selection = editorState.getSelection();\n var startKey = selection.getStartKey();\n var endKey = selection.getEndKey();\n var content = editorState.getCurrentContent();\n var target = selection; // Triple-click can lead to a selection that includes offset 0 of the\n // following block. The `SelectionState` for this case is accurate, but\n // we should avoid toggling block type for the trailing block because it\n // is a confusing interaction.\n\n if (startKey !== endKey && selection.getEndOffset() === 0) {\n var blockBefore = nullthrows(content.getBlockBefore(endKey));\n endKey = blockBefore.getKey();\n target = target.merge({\n anchorKey: startKey,\n anchorOffset: selection.getStartOffset(),\n focusKey: endKey,\n focusOffset: blockBefore.getLength(),\n isBackward: false\n });\n }\n\n var hasAtomicBlock = content.getBlockMap().skipWhile(function (_, k) {\n return k !== startKey;\n }).reverse().skipWhile(function (_, k) {\n return k !== endKey;\n }).some(function (v) {\n return v.getType() === 'atomic';\n });\n\n if (hasAtomicBlock) {\n return editorState;\n }\n\n var typeToSet = content.getBlockForKey(startKey).getType() === blockType ? 'unstyled' : blockType;\n return EditorState.push(editorState, DraftModifier.setBlockType(content, target, typeToSet), 'change-block-type');\n },\n toggleCode: function toggleCode(editorState) {\n var selection = editorState.getSelection();\n var anchorKey = selection.getAnchorKey();\n var focusKey = selection.getFocusKey();\n\n if (selection.isCollapsed() || anchorKey !== focusKey) {\n return RichTextEditorUtil.toggleBlockType(editorState, 'code-block');\n }\n\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'CODE');\n },\n\n /**\n * Toggle the specified inline style for the selection. If the\n * user's selection is collapsed, apply or remove the style for the\n * internal state. If it is not collapsed, apply the change directly\n * to the document state.\n */\n toggleInlineStyle: function toggleInlineStyle(editorState, inlineStyle) {\n var selection = editorState.getSelection();\n var currentStyle = editorState.getCurrentInlineStyle(); // If the selection is collapsed, toggle the specified style on or off and\n // set the result as the new inline style override. This will then be\n // used as the inline style for the next character to be inserted.\n\n if (selection.isCollapsed()) {\n return EditorState.setInlineStyleOverride(editorState, currentStyle.has(inlineStyle) ? currentStyle.remove(inlineStyle) : currentStyle.add(inlineStyle));\n } // If characters are selected, immediately apply or remove the\n // inline style on the document state itself.\n\n\n var content = editorState.getCurrentContent();\n var newContent; // If the style is already present for the selection range, remove it.\n // Otherwise, apply it.\n\n if (currentStyle.has(inlineStyle)) {\n newContent = DraftModifier.removeInlineStyle(content, selection, inlineStyle);\n } else {\n newContent = DraftModifier.applyInlineStyle(content, selection, inlineStyle);\n }\n\n return EditorState.push(editorState, newContent, 'change-inline-style');\n },\n toggleLink: function toggleLink(editorState, targetSelection, entityKey) {\n var withoutLink = DraftModifier.applyEntity(editorState.getCurrentContent(), targetSelection, entityKey);\n return EditorState.push(editorState, withoutLink, 'apply-entity');\n },\n\n /**\n * When a collapsed cursor is at the start of a styled block, changes block\n * type to 'unstyled'. Returns null if selection does not meet that criteria.\n */\n tryToRemoveBlockStyle: function tryToRemoveBlockStyle(editorState) {\n var selection = editorState.getSelection();\n var offset = selection.getAnchorOffset();\n\n if (selection.isCollapsed() && offset === 0) {\n var key = selection.getAnchorKey();\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(key);\n var type = block.getType();\n var blockBefore = content.getBlockBefore(key);\n\n if (type === 'code-block' && blockBefore && blockBefore.getType() === 'code-block' && blockBefore.getLength() !== 0) {\n return null;\n }\n\n if (type !== 'unstyled') {\n return DraftModifier.setBlockType(content, selection, 'unstyled');\n }\n }\n\n return null;\n }\n};\nmodule.exports = RichTextEditorUtil;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X'); // Firefox on OSX had a bug resulting in navigation instead of cursor movement.\n// This bug was fixed in Firefox 29. Feature detection is virtually impossible\n// so we just check the version number. See #342765.\n\nvar shouldFixFirefoxMovement = isOSX && UserAgent.isBrowser('Firefox < 29');\nvar hasCommandModifier = KeyBindingUtil.hasCommandModifier,\n isCtrlKeyCommand = KeyBindingUtil.isCtrlKeyCommand;\n\nfunction shouldRemoveWord(e) {\n return isOSX && e.altKey || isCtrlKeyCommand(e);\n}\n/**\n * Get the appropriate undo/redo command for a Z key command.\n */\n\n\nfunction getZCommand(e) {\n if (!hasCommandModifier(e)) {\n return null;\n }\n\n return e.shiftKey ? 'redo' : 'undo';\n}\n\nfunction getDeleteCommand(e) {\n // Allow default \"cut\" behavior for PCs on Shift + Delete.\n if (!isOSX && e.shiftKey) {\n return null;\n }\n\n return shouldRemoveWord(e) ? 'delete-word' : 'delete';\n}\n\nfunction getBackspaceCommand(e) {\n if (hasCommandModifier(e) && isOSX) {\n return 'backspace-to-start-of-line';\n }\n\n return shouldRemoveWord(e) ? 'backspace-word' : 'backspace';\n}\n/**\n * Retrieve a bound key command for the given event.\n */\n\n\nfunction getDefaultKeyBinding(e) {\n switch (e.keyCode) {\n case 66:\n // B\n return hasCommandModifier(e) ? 'bold' : null;\n\n case 68:\n // D\n return isCtrlKeyCommand(e) ? 'delete' : null;\n\n case 72:\n // H\n return isCtrlKeyCommand(e) ? 'backspace' : null;\n\n case 73:\n // I\n return hasCommandModifier(e) ? 'italic' : null;\n\n case 74:\n // J\n return hasCommandModifier(e) ? 'code' : null;\n\n case 75:\n // K\n return isOSX && isCtrlKeyCommand(e) ? 'secondary-cut' : null;\n\n case 77:\n // M\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n case 79:\n // O\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n case 84:\n // T\n return isOSX && isCtrlKeyCommand(e) ? 'transpose-characters' : null;\n\n case 85:\n // U\n return hasCommandModifier(e) ? 'underline' : null;\n\n case 87:\n // W\n return isOSX && isCtrlKeyCommand(e) ? 'backspace-word' : null;\n\n case 89:\n // Y\n if (isCtrlKeyCommand(e)) {\n return isOSX ? 'secondary-paste' : 'redo';\n }\n\n return null;\n\n case 90:\n // Z\n return getZCommand(e) || null;\n\n case Keys.RETURN:\n return 'split-block';\n\n case Keys.DELETE:\n return getDeleteCommand(e);\n\n case Keys.BACKSPACE:\n return getBackspaceCommand(e);\n // LEFT/RIGHT handlers serve as a workaround for a Firefox bug.\n\n case Keys.LEFT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-start-of-block' : null;\n\n case Keys.RIGHT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-end-of-block' : null;\n\n default:\n return null;\n }\n}\n\nmodule.exports = getDefaultKeyBinding;","/**\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 * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = {\n stringify: function stringify(key) {\n return '_' + String(key);\n },\n unstringify: function unstringify(key) {\n return key.slice(1);\n }\n};\nmodule.exports = DraftStringKey;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.search = exports.categories = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar categories = {\n activity: function activity() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"\n }));\n },\n custom: function custom() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"g\", {\n transform: \"translate(2.000000, 1.000000)\"\n }, _react[\"default\"].createElement(\"rect\", {\n id: \"Rectangle\",\n x: \"8\",\n y: \"0\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), _react[\"default\"].createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), _react[\"default\"].createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n })));\n },\n flags: function flags() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"\n }));\n },\n foods: function foods() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"\n }));\n },\n nature: function nature() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"\n }), _react[\"default\"].createElement(\"path\", {\n d: \"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"\n }));\n },\n objects: function objects() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"\n }), _react[\"default\"].createElement(\"path\", {\n d: \"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"\n }));\n },\n people: function people() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }), _react[\"default\"].createElement(\"path\", {\n d: \"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"\n }));\n },\n places: function places() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"\n }), _react[\"default\"].createElement(\"path\", {\n d: \"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"\n }));\n },\n recent: function recent() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"\n }), _react[\"default\"].createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }));\n },\n symbols: function symbols() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"\n }));\n }\n};\nexports.categories = categories;\nvar search = {\n search: function search() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\"\n }));\n },\n \"delete\": function _delete() {\n return _react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, _react[\"default\"].createElement(\"path\", {\n d: \"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z\"\n }));\n }\n};\nexports.search = search;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _store = _interopRequireDefault(require(\"./store\"));\n\nvar DEFAULTS = ['+1', 'grinning', 'kissing_heart', 'heart_eyes', 'laughing', 'stuck_out_tongue_winking_eye', 'sweat_smile', 'joy', 'scream', 'disappointed', 'unamused', 'weary', 'sob', 'sunglasses', 'heart', 'poop'];\nvar frequently, initialized;\nvar defaults = {};\n\nfunction init() {\n initialized = true;\n frequently = _store[\"default\"].get('frequently');\n}\n\nfunction add(emoji) {\n if (!initialized) init();\n var id = emoji.id;\n frequently || (frequently = defaults);\n frequently[id] || (frequently[id] = 0);\n frequently[id] += 1;\n\n _store[\"default\"].set('last', id);\n\n _store[\"default\"].set('frequently', frequently);\n}\n\nfunction get(perLine) {\n if (!initialized) init();\n\n if (!frequently) {\n defaults = {};\n var result = [];\n\n for (var i = 0; i < perLine; i++) {\n defaults[DEFAULTS[i]] = perLine - i;\n result.push(DEFAULTS[i]);\n }\n\n return result;\n }\n\n var quantity = perLine * 4;\n var frequentlyKeys = [];\n\n for (var key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key);\n }\n }\n\n var sorted = frequentlyKeys.sort(function (a, b) {\n return frequently[a] - frequently[b];\n }).reverse();\n var sliced = sorted.slice(0, quantity);\n\n var last = _store[\"default\"].get('last');\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop();\n sliced.push(last);\n }\n\n return sliced;\n}\n\nvar _default = {\n add: add,\n get: get\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PickerPropTypes = exports.EmojiPropTypes = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar EmojiPropTypes = {\n data: _propTypes[\"default\"].object.isRequired,\n onOver: _propTypes[\"default\"].func,\n onLeave: _propTypes[\"default\"].func,\n onClick: _propTypes[\"default\"].func,\n fallback: _propTypes[\"default\"].func,\n backgroundImageFn: _propTypes[\"default\"].func,\n \"native\": _propTypes[\"default\"].bool,\n forceSize: _propTypes[\"default\"].bool,\n tooltip: _propTypes[\"default\"].bool,\n useButton: _propTypes[\"default\"].bool,\n skin: _propTypes[\"default\"].oneOf([1, 2, 3, 4, 5, 6]),\n sheetSize: _propTypes[\"default\"].oneOf([16, 20, 32, 64]),\n sheetColumns: _propTypes[\"default\"].number,\n sheetRows: _propTypes[\"default\"].number,\n set: _propTypes[\"default\"].oneOf(['apple', 'google', 'twitter', 'facebook']),\n size: _propTypes[\"default\"].number.isRequired,\n emoji: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].object]).isRequired\n};\nexports.EmojiPropTypes = EmojiPropTypes;\nvar PickerPropTypes = {\n onClick: _propTypes[\"default\"].func,\n onSelect: _propTypes[\"default\"].func,\n onSkinChange: _propTypes[\"default\"].func,\n perLine: _propTypes[\"default\"].number,\n emojiSize: _propTypes[\"default\"].number,\n i18n: _propTypes[\"default\"].object,\n style: _propTypes[\"default\"].object,\n title: _propTypes[\"default\"].string,\n emoji: _propTypes[\"default\"].string,\n color: _propTypes[\"default\"].string,\n set: EmojiPropTypes.set,\n skin: EmojiPropTypes.skin,\n \"native\": _propTypes[\"default\"].bool,\n backgroundImageFn: EmojiPropTypes.backgroundImageFn,\n sheetSize: EmojiPropTypes.sheetSize,\n emojisToShowFilter: _propTypes[\"default\"].func,\n showPreview: _propTypes[\"default\"].bool,\n showSkinTones: _propTypes[\"default\"].bool,\n emojiTooltip: EmojiPropTypes.tooltip,\n useButton: EmojiPropTypes.useButton,\n theme: _propTypes[\"default\"].oneOf(['auto', 'light', 'dark']),\n include: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string),\n exclude: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string),\n recent: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string),\n autoFocus: _propTypes[\"default\"].bool,\n enableFrequentEmojiSort: _propTypes[\"default\"].bool,\n custom: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].shape({\n name: _propTypes[\"default\"].string.isRequired,\n short_names: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string).isRequired,\n emoticons: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string),\n keywords: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string),\n imageUrl: _propTypes[\"default\"].string,\n spriteUrl: _propTypes[\"default\"].string,\n sheet_x: _propTypes[\"default\"].number,\n sheet_y: _propTypes[\"default\"].number,\n size: _propTypes[\"default\"].number,\n sheetColumns: _propTypes[\"default\"].number,\n sheetRows: _propTypes[\"default\"].number\n })),\n skinEmoji: _propTypes[\"default\"].string,\n notFound: _propTypes[\"default\"].func,\n notFoundEmoji: _propTypes[\"default\"].string,\n icons: _propTypes[\"default\"].object\n};\nexports.PickerPropTypes = PickerPropTypes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EmojiDefaultProps = exports.PickerDefaultProps = void 0;\nvar EmojiDefaultProps = {\n skin: 1,\n set: 'apple',\n sheetSize: 64,\n sheetColumns: 57,\n sheetRows: 57,\n \"native\": false,\n forceSize: false,\n tooltip: false,\n useButton: true,\n backgroundImageFn: function backgroundImageFn(set, sheetSize) {\n return \"https://unpkg.com/emoji-datasource-\".concat(set, \"@\").concat(\"5.0.1\", \"/img/\").concat(set, \"/sheets-256/\").concat(sheetSize, \".png\");\n }\n};\nexports.EmojiDefaultProps = EmojiDefaultProps;\nvar PickerDefaultProps = {\n onClick: function onClick() {},\n onSelect: function onSelect() {},\n onSkinChange: function onSkinChange() {},\n emojiSize: 24,\n perLine: 9,\n i18n: {},\n style: {},\n title: 'Emoji Mart™',\n emoji: 'department_store',\n color: '#ae65c5',\n set: EmojiDefaultProps.set,\n theme: 'light',\n skin: null,\n defaultSkin: EmojiDefaultProps.skin,\n \"native\": EmojiDefaultProps[\"native\"],\n sheetSize: EmojiDefaultProps.sheetSize,\n backgroundImageFn: EmojiDefaultProps.backgroundImageFn,\n emojisToShowFilter: null,\n showPreview: true,\n showSkinTones: true,\n emojiTooltip: EmojiDefaultProps.tooltip,\n useButton: EmojiDefaultProps.useButton,\n autoFocus: false,\n enableFrequentEmojiSort: false,\n custom: [],\n skinEmoji: '',\n notFound: function notFound() {},\n notFoundEmoji: 'sleuth_or_spy',\n icons: {}\n};\nexports.PickerDefaultProps = PickerDefaultProps;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar Skins =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n (0, _inherits2[\"default\"])(Skins, _React$PureComponent);\n\n function Skins(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Skins);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Skins).call(this, props));\n _this.state = {\n opened: false\n };\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Skins, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var skin = parseInt(e.currentTarget.getAttribute('data-skin'));\n var onChange = this.props.onChange;\n\n if (!this.state.opened) {\n this.setState({\n opened: true\n });\n } else {\n this.setState({\n opened: false\n });\n\n if (skin != this.props.skin) {\n onChange(skin);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n return Skins;\n}(_react[\"default\"].PureComponent);\n\nexports[\"default\"] = Skins;\nSkins.propTypes\n/* remove-proptypes */\n= {\n onChange: _propTypes[\"default\"].func,\n skin: _propTypes[\"default\"].number.isRequired\n};\nSkins.defaultProps = {\n onChange: function onChange() {}\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar findWithRegex = function findWithRegex(regex, contentBlock, callback) {\n // Get the text from the contentBlock\n var text = contentBlock.getText();\n var matchArr = void 0;\n var start = void 0; // eslint-disable-line\n // Go through all matches in the text and return the indizes to the callback\n while ((matchArr = regex.exec(text)) !== null) {\n // eslint-disable-line\n if (matchArr.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n start = matchArr.index;\n callback(start, start + matchArr[0].length);\n }\n};\n\nexports.default = findWithRegex;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unicodeEmojiRegexp = void 0;\n\nvar _emojiRegex = _interopRequireDefault(require(\"emoji-regex\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar unicodeEmojiRegexp = (0, _emojiRegex.default)();\nexports.unicodeEmojiRegexp = unicodeEmojiRegexp;","// 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 eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default 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}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M6 19h12v2H6z\"\n}), 'Minimize');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M15 3l2.3 2.3-2.89 2.87 1.42 1.42L18.7 6.7 21 9V3h-6zM3 9l2.3-2.3 2.87 2.89 1.42-1.42L6.7 5.3 9 3H3v6zm6 12l-2.3-2.3 2.89-2.87-1.42-1.42L5.3 17.3 3 15v6h6zm12-6l-2.3 2.3-2.87-2.89-1.42 1.42 2.89 2.87L15 21h6v-6z\"\n}), 'ZoomOutMap');\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _nimblePicker = _interopRequireDefault(require(\"emoji-mart/dist/components/picker/nimble-picker\"));\n\nvar _nimbleEmoji = _interopRequireDefault(require(\"emoji-mart/dist/components/emoji/nimble-emoji\"));\n\nvar _draftJs = require(\"draft-js\");\n\nvar _attachImmutableEntitiesToEmojis = _interopRequireDefault(require(\"./modifiers/attachImmutableEntitiesToEmojis\"));\n\nvar _addEmoji = _interopRequireDefault(require(\"./modifiers/addEmoji\"));\n\nvar _emoji = _interopRequireDefault(require(\"./strategies/emoji\"));\n\nvar _getEmojiDataFromNative = _interopRequireDefault(require(\"./utils/getEmojiDataFromNative\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _default() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _onChange = _ref.onChange,\n data = _ref.data,\n set = _ref.set,\n _ref$emojiSize = _ref.emojiSize,\n emojiSize = _ref$emojiSize === void 0 ? 16 : _ref$emojiSize,\n _ref$sheetSize = _ref.sheetSize,\n sheetSize = _ref$sheetSize === void 0 ? emojiSize * 2 : _ref$sheetSize;\n\n var getEmoji = (0, _getEmojiDataFromNative.default)(data, set);\n var store = {\n getEditorState: undefined,\n setEditorState: undefined\n };\n\n var EmojiComponent = _react.default.memo(function (_ref2) {\n var decoratedText = _ref2.decoratedText,\n children = _ref2.children;\n var foundedEmoji = getEmoji(decoratedText);\n\n if (foundedEmoji) {\n return _react.default.createElement(_nimbleEmoji.default, {\n emoji: foundedEmoji,\n size: emojiSize,\n sheetSize: sheetSize,\n data: data,\n set: set\n }, children || decoratedText);\n }\n\n return decoratedText;\n });\n\n var handleEmoji = function handleEmoji(emojiSymbol) {\n if (!store.getEditorState) {\n throw new Error('Emoji-mart plugin: handle emoji fired on unbinded instace.');\n }\n\n var newEditorState = (0, _addEmoji.default)(store.getEditorState(), emojiSymbol.native);\n\n if (!store.setEditorState) {\n throw new Error('Emoji-mart plugin: handle emoji fired on unbinded instace.');\n }\n\n store.setEditorState(newEditorState);\n };\n\n var PickerComponent = _react.default.forwardRef(function (props, ref) {\n return _react.default.createElement(_nimblePicker.default, _extends({\n ref: ref,\n set: set,\n data: data,\n sheetSize: sheetSize,\n onSelect: handleEmoji\n }, props));\n });\n\n var decorators = [{\n strategy: _emoji.default,\n component: EmojiComponent\n }];\n return {\n Emoji: EmojiComponent,\n Picker: PickerComponent,\n decorators: decorators,\n initialize: function initialize(_ref3) {\n var getEditorState = _ref3.getEditorState,\n setEditorState = _ref3.setEditorState;\n store.getEditorState = getEditorState;\n store.setEditorState = setEditorState;\n },\n willUnmount: function willUnmount() {\n store.getEditorState = undefined;\n store.setEditorState = undefined;\n },\n modifiers: {\n addEmoji: _addEmoji.default\n },\n onChange: function onChange(editorState) {\n var newEditorState = (0, _attachImmutableEntitiesToEmojis.default)(editorState);\n\n if (!newEditorState.getCurrentContent().equals(editorState.getCurrentContent())) {\n // Forcing the current selection ensures that it will be at it's right place.\n // This solves the issue where inserting an Emoji on OSX with Apple's Emoji\n // selector led to the right selection the data, but wrong position in\n // the contenteditable.\n newEditorState = _draftJs.EditorState.forceSelection(newEditorState, newEditorState.getSelection());\n }\n\n if (_onChange) {\n return _onChange(newEditorState);\n }\n\n return newEditorState;\n }\n };\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.composeDecorators = exports.createEditorStateWithText = exports.default = undefined;\n\nvar _createEditorStateWithText = require('./utils/createEditorStateWithText');\n\nvar _createEditorStateWithText2 = _interopRequireDefault(_createEditorStateWithText);\n\nvar _composeDecorators = require('./utils/composeDecorators');\n\nvar _composeDecorators2 = _interopRequireDefault(_composeDecorators);\n\nvar _Editor = require('./Editor');\n\nvar _Editor2 = _interopRequireDefault(_Editor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Editor2.default;\n\n// eslint-disable-next-line import/no-named-as-default\n\nvar createEditorStateWithText = exports.createEditorStateWithText = _createEditorStateWithText2.default;\nvar composeDecorators = exports.composeDecorators = _composeDecorators2.default;","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.MicRecorder = factory());\n}(this, (function () {\n\nfunction new_byte$1(count) {\n return new Int8Array(count);\n}\n\nfunction new_short(count) {\n return new Int16Array(count);\n}\n\nfunction new_int$1(count) {\n return new Int32Array(count);\n}\n\nfunction new_float$1(count) {\n return new Float32Array(count);\n}\n\nfunction new_double$1(count) {\n return new Float64Array(count);\n}\n\nfunction new_float_n$1(args) {\n if (args.length == 1) {\n return new_float$1(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_float_n$1(args));\n }\n return A;\n}\nfunction new_int_n$1(args) {\n if (args.length == 1) {\n return new_int$1(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_int_n$1(args));\n }\n return A;\n}\n\nfunction new_short_n(args) {\n if (args.length == 1) {\n return new_short(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_short_n(args));\n }\n return A;\n}\n\nfunction new_array_n$1(args) {\n if (args.length == 1) {\n return new Array(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_array_n$1(args));\n }\n return A;\n}\n\n\nvar Arrays$1 = {};\n\nArrays$1.fill = function (a, fromIndex, toIndex, val) {\n if (arguments.length == 2) {\n for (var i = 0; i < a.length; i++) {\n a[i] = arguments[1];\n }\n } else {\n for (var i = fromIndex; i < toIndex; i++) {\n a[i] = val;\n }\n }\n};\n\nvar System$1 = {};\n\nSystem$1.arraycopy = function (src, srcPos, dest, destPos, length) {\n var srcEnd = srcPos + length;\n while (srcPos < srcEnd)\n dest[destPos++] = src[srcPos++];\n};\n\n\nvar Util$1 = {};\nUtil$1.SQRT2 = 1.41421356237309504880;\nUtil$1.FAST_LOG10 = function (x) {\n return Math.log10(x);\n};\n\nUtil$1.FAST_LOG10_X = function (x, y) {\n return Math.log10(x) * y;\n};\n\nfunction ShortBlock$1(ordinal) {\n this.ordinal = ordinal;\n}\n/**\n * LAME may use them, even different block types for L/R.\n */\nShortBlock$1.short_block_allowed = new ShortBlock$1(0);\n/**\n * LAME may use them, but always same block types in L/R.\n */\nShortBlock$1.short_block_coupled = new ShortBlock$1(1);\n/**\n * LAME will not use short blocks, long blocks only.\n */\nShortBlock$1.short_block_dispensed = new ShortBlock$1(2);\n/**\n * LAME will not use long blocks, short blocks only.\n */\nShortBlock$1.short_block_forced = new ShortBlock$1(3);\n\nvar Float$1 = {};\nFloat$1.MAX_VALUE = 3.4028235e+38;\n\nfunction VbrMode$1(ordinal) {\n this.ordinal = ordinal;\n}\nVbrMode$1.vbr_off = new VbrMode$1(0);\nVbrMode$1.vbr_mt = new VbrMode$1(1);\nVbrMode$1.vbr_rh = new VbrMode$1(2);\nVbrMode$1.vbr_abr = new VbrMode$1(3);\nVbrMode$1.vbr_mtrh = new VbrMode$1(4);\nVbrMode$1.vbr_default = VbrMode$1.vbr_mtrh;\n\nvar assert$1 = function (x) {\n //console.assert(x);\n};\n\nvar common = {\n \"System\": System$1,\n \"VbrMode\": VbrMode$1,\n \"Float\": Float$1,\n \"ShortBlock\": ShortBlock$1,\n \"Util\": Util$1,\n \"Arrays\": Arrays$1,\n \"new_array_n\": new_array_n$1,\n \"new_byte\": new_byte$1,\n \"new_double\": new_double$1,\n \"new_float\": new_float$1,\n \"new_float_n\": new_float_n$1,\n \"new_int\": new_int$1,\n \"new_int_n\": new_int_n$1,\n \"new_short\": new_short,\n \"new_short_n\": new_short_n,\n \"assert\": assert$1\n};\n\n/*\n * MP3 window subband -> subband filtering -> mdct routine\n *\n * Copyright (c) 1999-2000 Takehiro Tominaga\n *\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Library General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n/*\n * Special Thanks to Patrick De Smet for your advices.\n */\n\n/* $Id: NewMDCT.java,v 1.11 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\n\nvar System$6 = common.System;\nvar Util$6 = common.Util;\nvar Arrays$6 = common.Arrays;\nvar new_float$6 = common.new_float;\nfunction NewMDCT() {\n\n\tvar enwindow = [\n\t\t\t-4.77e-07 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.03951e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.53674e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t2.841473e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t3.5758972e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t3.401756e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.83715e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.9182e-05 * 0.740951125354959 / 2.384e-06, /* 15 */\n\t\t\t1.2398e-05 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.91212e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t2.283096e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.6994476e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t-1.8756866e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t-2.630711e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t-2.47478e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t-1.4782e-05 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.063471690191471e-01, 1.960342806591213e-01,\n\n\t\t\t-4.77e-07 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.05858e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.30786e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t2.521515e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t3.5694122e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t3.643036e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.91821e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.6321e-05 * 0.773010453362737 / 2.384e-06, /* 14 */\n\t\t\t1.1444e-05 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.65462e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t2.110004e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.6112804e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t-1.9634247e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t-2.803326e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t-2.77042e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t-1.6689e-05 * 0.773010453362737 / 2.384e-06,\n\t\t\t8.206787908286602e-01, 3.901806440322567e-01,\n\n\t\t\t-4.77e-07 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.07288e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.02653e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t2.174854e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t3.5586357e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t3.858566e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.95159e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.3460e-05 * 0.803207531480645 / 2.384e-06, /* 13 */\n\t\t\t1.0014e-05 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.40190e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.937389e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.5233517e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t-2.0506859e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t-2.974033e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t-3.07560e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t-1.8120e-05 * 0.803207531480645 / 2.384e-06,\n\t\t\t7.416505462720353e-01, 5.805693545089249e-01,\n\n\t\t\t-4.77e-07 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.08242e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t8.68797e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.800537e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t3.5435200e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t4.049301e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t9.94205e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t9.0599e-05 * 0.831469612302545 / 2.384e-06, /* 12 */\n\t\t\t9.060e-06 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.16348e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.766682e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.4358521e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t-2.1372318e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t-3.14188e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t-3.39031e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t-1.9550e-05 * 0.831469612302545 / 2.384e-06,\n\t\t\t6.681786379192989e-01, 7.653668647301797e-01,\n\n\t\t\t-4.77e-07 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.08719e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t8.29220e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.399517e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t3.5242081e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t4.215240e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t9.89437e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t8.7261e-05 * 0.857728610000272 / 2.384e-06, /* 11 */\n\t\t\t8.106e-06 * 0.857728610000272 / 2.384e-06,\n\t\t\t9.3937e-05 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.597881e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.3489246e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t-2.2228718e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t-3.306866e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t-3.71456e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t-2.1458e-05 * 0.857728610000272 / 2.384e-06,\n\t\t\t5.993769336819237e-01, 9.427934736519954e-01,\n\n\t\t\t-4.77e-07 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.08719e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t7.8392e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t9.71317e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t3.5007000e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t4.357815e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t9.80854e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t8.3923e-05 * 0.881921264348355 / 2.384e-06, /* 10 */\n\t\t\t7.629e-06 * 0.881921264348355 / 2.384e-06,\n\t\t\t7.2956e-05 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.432419e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.2627602e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t-2.3074150e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t-3.467083e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t-4.04358e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t-2.3365e-05 * 0.881921264348355 / 2.384e-06,\n\t\t\t5.345111359507916e-01, 1.111140466039205e+00,\n\n\t\t\t-9.54e-07 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.08242e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t7.31945e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t5.15938e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t3.4730434e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t4.477024e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t9.68933e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t8.0585e-05 * 0.903989293123443 / 2.384e-06, /* 9 */\n\t\t\t6.676e-06 * 0.903989293123443 / 2.384e-06,\n\t\t\t5.2929e-05 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.269817e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.1775017e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t-2.3907185e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t-3.622532e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t-4.38213e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t-2.5272e-05 * 0.903989293123443 / 2.384e-06,\n\t\t\t4.729647758913199e-01, 1.268786568327291e+00,\n\n\t\t\t-9.54e-07 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.06812e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t6.74248e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.3379e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.4412861e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t4.573822e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t9.54151e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t7.6771e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t6.199e-06 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.4332e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.111031e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.0933399e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-2.4725437e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-3.771782e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-4.72546e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-2.7657e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t4.1421356237309504879e-01, /* tan(PI/8) */\n\t\t\t1.414213562373095e+00,\n\n\t\t\t-9.54e-07 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.05381e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t6.10352e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t-4.75883e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t3.4055710e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t4.649162e-03 * 0.941544065183021 / 2.384e-06,\n\t\t\t9.35555e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t7.3433e-05 * 0.941544065183021 / 2.384e-06, /* 7 */\n\t\t\t5.245e-06 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.7166e-05 * 0.941544065183021 / 2.384e-06,\n\t\t\t9.56535e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.0103703e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t-2.5527000e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t-3.914356e-03 * 0.941544065183021 / 2.384e-06,\n\t\t\t-5.07355e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t-3.0041e-05 * 0.941544065183021 / 2.384e-06,\n\t\t\t3.578057213145241e-01, 1.546020906725474e+00,\n\n\t\t\t-9.54e-07 * 0.956940335732209 / 2.384e-06,\n\t\t\t1.02520e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t5.39303e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t-1.011848e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t3.3659935e-02 * 0.956940335732209 / 2.384e-06,\n\t\t\t4.703045e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.15051e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t7.0095e-05 * 0.956940335732209 / 2.384e-06, /* 6 */\n\t\t\t4.768e-06 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.54e-07 * 0.956940335732209 / 2.384e-06,\n\t\t\t8.06808e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.287834e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t-2.6310921e-02 * 0.956940335732209 / 2.384e-06,\n\t\t\t-4.048824e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t-5.42164e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t-3.2425e-05 * 0.956940335732209 / 2.384e-06,\n\t\t\t3.033466836073424e-01, 1.662939224605090e+00,\n\n\t\t\t-1.431e-06 * 0.970031253194544 / 2.384e-06,\n\t\t\t9.9182e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t4.62532e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t-1.573563e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t3.3225536e-02 * 0.970031253194544 / 2.384e-06,\n\t\t\t4.737377e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t8.91685e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t6.6280e-05 * 0.970031253194544 / 2.384e-06, /* 5 */\n\t\t\t4.292e-06 * 0.970031253194544 / 2.384e-06,\n\t\t\t-1.3828e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t6.61850e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t8.487225e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t-2.7073860e-02 * 0.970031253194544 / 2.384e-06,\n\t\t\t-4.174709e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t-5.76973e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t-3.4809e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t2.504869601913055e-01, 1.763842528696710e+00,\n\n\t\t\t-1.431e-06 * 0.98078528040323 / 2.384e-06,\n\t\t\t9.5367e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t3.78609e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.161503e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t3.2754898e-02 * 0.98078528040323 / 2.384e-06,\n\t\t\t4.752159e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t8.66413e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t6.2943e-05 * 0.98078528040323 / 2.384e-06, /* 4 */\n\t\t\t3.815e-06 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.718e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t5.22137e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t7.703304e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.7815342e-02 * 0.98078528040323 / 2.384e-06,\n\t\t\t-4.290581e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t-6.11782e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t-3.7670e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t1.989123673796580e-01, 1.847759065022573e+00,\n\n\t\t\t-1.907e-06 * 0.989176509964781 / 2.384e-06,\n\t\t\t9.0122e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t2.88486e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t-2.774239e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t3.2248020e-02 * 0.989176509964781 / 2.384e-06,\n\t\t\t4.748821e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t8.38757e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t5.9605e-05 * 0.989176509964781 / 2.384e-06, /* 3 */\n\t\t\t3.338e-06 * 0.989176509964781 / 2.384e-06,\n\t\t\t-3.9577e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t3.88145e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t6.937027e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t-2.8532982e-02 * 0.989176509964781 / 2.384e-06,\n\t\t\t-4.395962e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t-6.46591e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t-4.0531e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t1.483359875383474e-01, 1.913880671464418e+00,\n\n\t\t\t-1.907e-06 * 0.995184726672197 / 2.384e-06,\n\t\t\t8.4400e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t1.91689e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t-3.411293e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t3.1706810e-02 * 0.995184726672197 / 2.384e-06,\n\t\t\t4.728317e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t8.09669e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t5.579e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t3.338e-06 * 0.995184726672197 / 2.384e-06,\n\t\t\t-5.0545e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t2.59876e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t6.189346e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t-2.9224873e-02 * 0.995184726672197 / 2.384e-06,\n\t\t\t-4.489899e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t-6.80923e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t-4.3392e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t9.849140335716425e-02, 1.961570560806461e+00,\n\n\t\t\t-2.384e-06 * 0.998795456205172 / 2.384e-06,\n\t\t\t7.7724e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t8.8215e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.072189e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t3.1132698e-02 * 0.998795456205172 / 2.384e-06,\n\t\t\t4.691124e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t7.79152e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t5.2929e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t2.861e-06 * 0.998795456205172 / 2.384e-06,\n\t\t\t-6.0558e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t1.37329e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t5.462170e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t-2.9890060e-02 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.570484e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t-7.14302e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.6253e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t4.912684976946725e-02, 1.990369453344394e+00,\n\n\t\t\t3.5780907e-02 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.7876148e-02 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t3.134727e-03 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t2.457142e-03 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t9.71317e-04 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t2.18868e-04 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.01566e-04 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.3828e-05 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\n\t\t\t3.0526638e-02 / 2.384e-06, 4.638195e-03 / 2.384e-06,\n\t\t\t7.47204e-04 / 2.384e-06, 4.9591e-05 / 2.384e-06,\n\t\t\t4.756451e-03 / 2.384e-06, 2.1458e-05 / 2.384e-06,\n\t\t\t-6.9618e-05 / 2.384e-06, /* 2.384e-06/2.384e-06 */\n\t];\n\n\tvar NS = 12;\n\tvar NL = 36;\n\n\tvar win = [\n\t [\n\t 2.382191739347913e-13,\n\t 6.423305872147834e-13,\n\t 9.400849094049688e-13,\n\t 1.122435026096556e-12,\n\t 1.183840321267481e-12,\n\t 1.122435026096556e-12,\n\t 9.400849094049690e-13,\n\t 6.423305872147839e-13,\n\t 2.382191739347918e-13,\n\n\t 5.456116108943412e-12,\n\t 4.878985199565852e-12,\n\t 4.240448995017367e-12,\n\t 3.559909094758252e-12,\n\t 2.858043359288075e-12,\n\t 2.156177623817898e-12,\n\t 1.475637723558783e-12,\n\t 8.371015190102974e-13,\n\t 2.599706096327376e-13,\n\n\t -5.456116108943412e-12,\n\t -4.878985199565852e-12,\n\t -4.240448995017367e-12,\n\t -3.559909094758252e-12,\n\t -2.858043359288076e-12,\n\t -2.156177623817898e-12,\n\t -1.475637723558783e-12,\n\t -8.371015190102975e-13,\n\t -2.599706096327376e-13,\n\n\t -2.382191739347923e-13,\n\t -6.423305872147843e-13,\n\t -9.400849094049696e-13,\n\t -1.122435026096556e-12,\n\t -1.183840321267481e-12,\n\t -1.122435026096556e-12,\n\t -9.400849094049694e-13,\n\t -6.423305872147840e-13,\n\t -2.382191739347918e-13,\n\t ],\n\t [\n\t 2.382191739347913e-13,\n\t 6.423305872147834e-13,\n\t 9.400849094049688e-13,\n\t 1.122435026096556e-12,\n\t 1.183840321267481e-12,\n\t 1.122435026096556e-12,\n\t 9.400849094049688e-13,\n\t 6.423305872147841e-13,\n\t 2.382191739347918e-13,\n\n\t 5.456116108943413e-12,\n\t 4.878985199565852e-12,\n\t 4.240448995017367e-12,\n\t 3.559909094758253e-12,\n\t 2.858043359288075e-12,\n\t 2.156177623817898e-12,\n\t 1.475637723558782e-12,\n\t 8.371015190102975e-13,\n\t 2.599706096327376e-13,\n\n\t -5.461314069809755e-12,\n\t -4.921085770524055e-12,\n\t -4.343405037091838e-12,\n\t -3.732668368707687e-12,\n\t -3.093523840190885e-12,\n\t -2.430835727329465e-12,\n\t -1.734679010007751e-12,\n\t -9.748253656609281e-13,\n\t -2.797435120168326e-13,\n\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t -2.283748241799531e-13,\n\t -4.037858874020686e-13,\n\t -2.146547464825323e-13,\n\t ],\n\t [\n\t 1.316524975873958e-01, /* win[SHORT_TYPE] */\n\t 4.142135623730950e-01,\n\t 7.673269879789602e-01,\n\n\t 1.091308501069271e+00, /* tantab_l */\n\t 1.303225372841206e+00,\n\t 1.569685577117490e+00,\n\t 1.920982126971166e+00,\n\t 2.414213562373094e+00,\n\t 3.171594802363212e+00,\n\t 4.510708503662055e+00,\n\t 7.595754112725146e+00,\n\t 2.290376554843115e+01,\n\n\t 0.98480775301220802032, /* cx */\n\t 0.64278760968653936292,\n\t 0.34202014332566882393,\n\t 0.93969262078590842791,\n\t -0.17364817766693030343,\n\t -0.76604444311897790243,\n\t 0.86602540378443870761,\n\t 0.500000000000000e+00,\n\n\t -5.144957554275265e-01, /* ca */\n\t -4.717319685649723e-01,\n\t -3.133774542039019e-01,\n\t -1.819131996109812e-01,\n\t -9.457419252642064e-02,\n\t -4.096558288530405e-02,\n\t -1.419856857247115e-02,\n\t -3.699974673760037e-03,\n\n\t 8.574929257125442e-01, /* cs */\n\t 8.817419973177052e-01,\n\t 9.496286491027329e-01,\n\t 9.833145924917901e-01,\n\t 9.955178160675857e-01,\n\t 9.991605581781475e-01,\n\t 9.998991952444470e-01,\n\t 9.999931550702802e-01,\n\t ],\n\t [\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 2.283748241799531e-13,\n\t 4.037858874020686e-13,\n\t 2.146547464825323e-13,\n\n\t 5.461314069809755e-12,\n\t 4.921085770524055e-12,\n\t 4.343405037091838e-12,\n\t 3.732668368707687e-12,\n\t 3.093523840190885e-12,\n\t 2.430835727329466e-12,\n\t 1.734679010007751e-12,\n\t 9.748253656609281e-13,\n\t 2.797435120168326e-13,\n\n\t -5.456116108943413e-12,\n\t -4.878985199565852e-12,\n\t -4.240448995017367e-12,\n\t -3.559909094758253e-12,\n\t -2.858043359288075e-12,\n\t -2.156177623817898e-12,\n\t -1.475637723558782e-12,\n\t -8.371015190102975e-13,\n\t -2.599706096327376e-13,\n\n\t -2.382191739347913e-13,\n\t -6.423305872147834e-13,\n\t -9.400849094049688e-13,\n\t -1.122435026096556e-12,\n\t -1.183840321267481e-12,\n\t -1.122435026096556e-12,\n\t -9.400849094049688e-13,\n\t -6.423305872147841e-13,\n\t -2.382191739347918e-13,\n\t ]\n\t];\n\n\tvar tantab_l = win[Encoder_1.SHORT_TYPE];\n\tvar cx = win[Encoder_1.SHORT_TYPE];\n\tvar ca = win[Encoder_1.SHORT_TYPE];\n\tvar cs = win[Encoder_1.SHORT_TYPE];\n\n\t/**\n\t * new IDCT routine written by Takehiro TOMINAGA\n\t *\n\t * PURPOSE: Overlapping window on PCM samples
\n\t *\n\t * SEMANTICS:
\n\t * 32 16-bit pcm samples are scaled to fractional 2's complement and\n\t * concatenated to the end of the window buffer #x#. The updated window\n\t * buffer #x# is then windowed by the analysis window #c# to produce the\n\t * windowed sample #z#\n\t */\n\tvar order = [\n\t 0, 1, 16, 17, 8, 9, 24, 25, 4, 5, 20, 21, 12, 13, 28, 29,\n\t 2, 3, 18, 19, 10, 11, 26, 27, 6, 7, 22, 23, 14, 15, 30, 31\n\t];\n\n\t/**\n\t * returns sum_j=0^31 a[j]*cos(PI*j*(k+1/2)/32), 0<=k<32\n\t */\n\tfunction window_subband(x1, x1Pos, a) {\n\t\tvar wp = 10;\n\n\t\tvar x2 = x1Pos + 238 - 14 - 286;\n\n\t\tfor (var i = -15; i < 0; i++) {\n\t\t\tvar w, s, t;\n\n\t\t\tw = enwindow[wp + -10];\n\t\t\ts = x1[x2 + -224] * w;\n\t\t\tt = x1[x1Pos + 224] * w;\n\t\t\tw = enwindow[wp + -9];\n\t\t\ts += x1[x2 + -160] * w;\n\t\t\tt += x1[x1Pos + 160] * w;\n\t\t\tw = enwindow[wp + -8];\n\t\t\ts += x1[x2 + -96] * w;\n\t\t\tt += x1[x1Pos + 96] * w;\n\t\t\tw = enwindow[wp + -7];\n\t\t\ts += x1[x2 + -32] * w;\n\t\t\tt += x1[x1Pos + 32] * w;\n\t\t\tw = enwindow[wp + -6];\n\t\t\ts += x1[x2 + 32] * w;\n\t\t\tt += x1[x1Pos + -32] * w;\n\t\t\tw = enwindow[wp + -5];\n\t\t\ts += x1[x2 + 96] * w;\n\t\t\tt += x1[x1Pos + -96] * w;\n\t\t\tw = enwindow[wp + -4];\n\t\t\ts += x1[x2 + 160] * w;\n\t\t\tt += x1[x1Pos + -160] * w;\n\t\t\tw = enwindow[wp + -3];\n\t\t\ts += x1[x2 + 224] * w;\n\t\t\tt += x1[x1Pos + -224] * w;\n\n\t\t\tw = enwindow[wp + -2];\n\t\t\ts += x1[x1Pos + -256] * w;\n\t\t\tt -= x1[x2 + 256] * w;\n\t\t\tw = enwindow[wp + -1];\n\t\t\ts += x1[x1Pos + -192] * w;\n\t\t\tt -= x1[x2 + 192] * w;\n\t\t\tw = enwindow[wp + 0];\n\t\t\ts += x1[x1Pos + -128] * w;\n\t\t\tt -= x1[x2 + 128] * w;\n\t\t\tw = enwindow[wp + 1];\n\t\t\ts += x1[x1Pos + -64] * w;\n\t\t\tt -= x1[x2 + 64] * w;\n\t\t\tw = enwindow[wp + 2];\n\t\t\ts += x1[x1Pos + 0] * w;\n\t\t\tt -= x1[x2 + 0] * w;\n\t\t\tw = enwindow[wp + 3];\n\t\t\ts += x1[x1Pos + 64] * w;\n\t\t\tt -= x1[x2 + -64] * w;\n\t\t\tw = enwindow[wp + 4];\n\t\t\ts += x1[x1Pos + 128] * w;\n\t\t\tt -= x1[x2 + -128] * w;\n\t\t\tw = enwindow[wp + 5];\n\t\t\ts += x1[x1Pos + 192] * w;\n\t\t\tt -= x1[x2 + -192] * w;\n\n\t\t\t/*\n\t\t\t * this multiplyer could be removed, but it needs more 256 FLOAT\n\t\t\t * data. thinking about the data cache performance, I think we\n\t\t\t * should not use such a huge table. tt 2000/Oct/25\n\t\t\t */\n\t\t\ts *= enwindow[wp + 6];\n\t\t\tw = t - s;\n\t\t\ta[30 + i * 2] = t + s;\n\t\t\ta[31 + i * 2] = enwindow[wp + 7] * w;\n\t\t\twp += 18;\n\t\t\tx1Pos--;\n\t\t\tx2++;\n\t\t}\n\t\t{\n\t\t\tvar s, t, u, v;\n\t\t\tt = x1[x1Pos + -16] * enwindow[wp + -10];\n\t\t\ts = x1[x1Pos + -32] * enwindow[wp + -2];\n\t\t\tt += (x1[x1Pos + -48] - x1[x1Pos + 16]) * enwindow[wp + -9];\n\t\t\ts += x1[x1Pos + -96] * enwindow[wp + -1];\n\t\t\tt += (x1[x1Pos + -80] + x1[x1Pos + 48]) * enwindow[wp + -8];\n\t\t\ts += x1[x1Pos + -160] * enwindow[wp + 0];\n\t\t\tt += (x1[x1Pos + -112] - x1[x1Pos + 80]) * enwindow[wp + -7];\n\t\t\ts += x1[x1Pos + -224] * enwindow[wp + 1];\n\t\t\tt += (x1[x1Pos + -144] + x1[x1Pos + 112]) * enwindow[wp + -6];\n\t\t\ts -= x1[x1Pos + 32] * enwindow[wp + 2];\n\t\t\tt += (x1[x1Pos + -176] - x1[x1Pos + 144]) * enwindow[wp + -5];\n\t\t\ts -= x1[x1Pos + 96] * enwindow[wp + 3];\n\t\t\tt += (x1[x1Pos + -208] + x1[x1Pos + 176]) * enwindow[wp + -4];\n\t\t\ts -= x1[x1Pos + 160] * enwindow[wp + 4];\n\t\t\tt += (x1[x1Pos + -240] - x1[x1Pos + 208]) * enwindow[wp + -3];\n\t\t\ts -= x1[x1Pos + 224];\n\n\t\t\tu = s - t;\n\t\t\tv = s + t;\n\n\t\t\tt = a[14];\n\t\t\ts = a[15] - t;\n\n\t\t\ta[31] = v + t; /* A0 */\n\t\t\ta[30] = u + s; /* A1 */\n\t\t\ta[15] = u - s; /* A2 */\n\t\t\ta[14] = v - t; /* A3 */\n\t\t}\n\t\t{\n\t\t\tvar xr;\n\t\t\txr = a[28] - a[0];\n\t\t\ta[0] += a[28];\n\t\t\ta[28] = xr * enwindow[wp + -2 * 18 + 7];\n\t\t\txr = a[29] - a[1];\n\t\t\ta[1] += a[29];\n\t\t\ta[29] = xr * enwindow[wp + -2 * 18 + 7];\n\n\t\t\txr = a[26] - a[2];\n\t\t\ta[2] += a[26];\n\t\t\ta[26] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[27] - a[3];\n\t\t\ta[3] += a[27];\n\t\t\ta[27] = xr * enwindow[wp + -4 * 18 + 7];\n\n\t\t\txr = a[24] - a[4];\n\t\t\ta[4] += a[24];\n\t\t\ta[24] = xr * enwindow[wp + -6 * 18 + 7];\n\t\t\txr = a[25] - a[5];\n\t\t\ta[5] += a[25];\n\t\t\ta[25] = xr * enwindow[wp + -6 * 18 + 7];\n\n\t\t\txr = a[22] - a[6];\n\t\t\ta[6] += a[22];\n\t\t\ta[22] = xr * Util$6.SQRT2;\n\t\t\txr = a[23] - a[7];\n\t\t\ta[7] += a[23];\n\t\t\ta[23] = xr * Util$6.SQRT2 - a[7];\n\t\t\ta[7] -= a[6];\n\t\t\ta[22] -= a[7];\n\t\t\ta[23] -= a[22];\n\n\t\t\txr = a[6];\n\t\t\ta[6] = a[31] - xr;\n\t\t\ta[31] = a[31] + xr;\n\t\t\txr = a[7];\n\t\t\ta[7] = a[30] - xr;\n\t\t\ta[30] = a[30] + xr;\n\t\t\txr = a[22];\n\t\t\ta[22] = a[15] - xr;\n\t\t\ta[15] = a[15] + xr;\n\t\t\txr = a[23];\n\t\t\ta[23] = a[14] - xr;\n\t\t\ta[14] = a[14] + xr;\n\n\t\t\txr = a[20] - a[8];\n\t\t\ta[8] += a[20];\n\t\t\ta[20] = xr * enwindow[wp + -10 * 18 + 7];\n\t\t\txr = a[21] - a[9];\n\t\t\ta[9] += a[21];\n\t\t\ta[21] = xr * enwindow[wp + -10 * 18 + 7];\n\n\t\t\txr = a[18] - a[10];\n\t\t\ta[10] += a[18];\n\t\t\ta[18] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = a[19] - a[11];\n\t\t\ta[11] += a[19];\n\t\t\ta[19] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[16] - a[12];\n\t\t\ta[12] += a[16];\n\t\t\ta[16] = xr * enwindow[wp + -14 * 18 + 7];\n\t\t\txr = a[17] - a[13];\n\t\t\ta[13] += a[17];\n\t\t\ta[17] = xr * enwindow[wp + -14 * 18 + 7];\n\n\t\t\txr = -a[20] + a[24];\n\t\t\ta[20] += a[24];\n\t\t\ta[24] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = -a[21] + a[25];\n\t\t\ta[21] += a[25];\n\t\t\ta[25] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[4] - a[8];\n\t\t\ta[4] += a[8];\n\t\t\ta[8] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = a[5] - a[9];\n\t\t\ta[5] += a[9];\n\t\t\ta[9] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[0] - a[12];\n\t\t\ta[0] += a[12];\n\t\t\ta[12] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[1] - a[13];\n\t\t\ta[1] += a[13];\n\t\t\ta[13] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[16] - a[28];\n\t\t\ta[16] += a[28];\n\t\t\ta[28] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = -a[17] + a[29];\n\t\t\ta[17] += a[29];\n\t\t\ta[29] = xr * enwindow[wp + -4 * 18 + 7];\n\n\t\t\txr = Util$6.SQRT2 * (a[2] - a[10]);\n\t\t\ta[2] += a[10];\n\t\t\ta[10] = xr;\n\t\t\txr = Util$6.SQRT2 * (a[3] - a[11]);\n\t\t\ta[3] += a[11];\n\t\t\ta[11] = xr;\n\t\t\txr = Util$6.SQRT2 * (-a[18] + a[26]);\n\t\t\ta[18] += a[26];\n\t\t\ta[26] = xr - a[18];\n\t\t\txr = Util$6.SQRT2 * (-a[19] + a[27]);\n\t\t\ta[19] += a[27];\n\t\t\ta[27] = xr - a[19];\n\n\t\t\txr = a[2];\n\t\t\ta[19] -= a[3];\n\t\t\ta[3] -= xr;\n\t\t\ta[2] = a[31] - xr;\n\t\t\ta[31] += xr;\n\t\t\txr = a[3];\n\t\t\ta[11] -= a[19];\n\t\t\ta[18] -= xr;\n\t\t\ta[3] = a[30] - xr;\n\t\t\ta[30] += xr;\n\t\t\txr = a[18];\n\t\t\ta[27] -= a[11];\n\t\t\ta[19] -= xr;\n\t\t\ta[18] = a[15] - xr;\n\t\t\ta[15] += xr;\n\n\t\t\txr = a[19];\n\t\t\ta[10] -= xr;\n\t\t\ta[19] = a[14] - xr;\n\t\t\ta[14] += xr;\n\t\t\txr = a[10];\n\t\t\ta[11] -= xr;\n\t\t\ta[10] = a[23] - xr;\n\t\t\ta[23] += xr;\n\t\t\txr = a[11];\n\t\t\ta[26] -= xr;\n\t\t\ta[11] = a[22] - xr;\n\t\t\ta[22] += xr;\n\t\t\txr = a[26];\n\t\t\ta[27] -= xr;\n\t\t\ta[26] = a[7] - xr;\n\t\t\ta[7] += xr;\n\n\t\t\txr = a[27];\n\t\t\ta[27] = a[6] - xr;\n\t\t\ta[6] += xr;\n\n\t\t\txr = Util$6.SQRT2 * (a[0] - a[4]);\n\t\t\ta[0] += a[4];\n\t\t\ta[4] = xr;\n\t\t\txr = Util$6.SQRT2 * (a[1] - a[5]);\n\t\t\ta[1] += a[5];\n\t\t\ta[5] = xr;\n\t\t\txr = Util$6.SQRT2 * (a[16] - a[20]);\n\t\t\ta[16] += a[20];\n\t\t\ta[20] = xr;\n\t\t\txr = Util$6.SQRT2 * (a[17] - a[21]);\n\t\t\ta[17] += a[21];\n\t\t\ta[21] = xr;\n\n\t\t\txr = -Util$6.SQRT2 * (a[8] - a[12]);\n\t\t\ta[8] += a[12];\n\t\t\ta[12] = xr - a[8];\n\t\t\txr = -Util$6.SQRT2 * (a[9] - a[13]);\n\t\t\ta[9] += a[13];\n\t\t\ta[13] = xr - a[9];\n\t\t\txr = -Util$6.SQRT2 * (a[25] - a[29]);\n\t\t\ta[25] += a[29];\n\t\t\ta[29] = xr - a[25];\n\t\t\txr = -Util$6.SQRT2 * (a[24] + a[28]);\n\t\t\ta[24] -= a[28];\n\t\t\ta[28] = xr - a[24];\n\n\t\t\txr = a[24] - a[16];\n\t\t\ta[24] = xr;\n\t\t\txr = a[20] - xr;\n\t\t\ta[20] = xr;\n\t\t\txr = a[28] - xr;\n\t\t\ta[28] = xr;\n\n\t\t\txr = a[25] - a[17];\n\t\t\ta[25] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[17] - a[1];\n\t\t\ta[17] = xr;\n\t\t\txr = a[9] - xr;\n\t\t\ta[9] = xr;\n\t\t\txr = a[25] - xr;\n\t\t\ta[25] = xr;\n\t\t\txr = a[5] - xr;\n\t\t\ta[5] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[13] - xr;\n\t\t\ta[13] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[1] - a[0];\n\t\t\ta[1] = xr;\n\t\t\txr = a[16] - xr;\n\t\t\ta[16] = xr;\n\t\t\txr = a[17] - xr;\n\t\t\ta[17] = xr;\n\t\t\txr = a[8] - xr;\n\t\t\ta[8] = xr;\n\t\t\txr = a[9] - xr;\n\t\t\ta[9] = xr;\n\t\t\txr = a[24] - xr;\n\t\t\ta[24] = xr;\n\t\t\txr = a[25] - xr;\n\t\t\ta[25] = xr;\n\t\t\txr = a[4] - xr;\n\t\t\ta[4] = xr;\n\t\t\txr = a[5] - xr;\n\t\t\ta[5] = xr;\n\t\t\txr = a[20] - xr;\n\t\t\ta[20] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[12] - xr;\n\t\t\ta[12] = xr;\n\t\t\txr = a[13] - xr;\n\t\t\ta[13] = xr;\n\t\t\txr = a[28] - xr;\n\t\t\ta[28] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[0];\n\t\t\ta[0] += a[31];\n\t\t\ta[31] -= xr;\n\t\t\txr = a[1];\n\t\t\ta[1] += a[30];\n\t\t\ta[30] -= xr;\n\t\t\txr = a[16];\n\t\t\ta[16] += a[15];\n\t\t\ta[15] -= xr;\n\t\t\txr = a[17];\n\t\t\ta[17] += a[14];\n\t\t\ta[14] -= xr;\n\t\t\txr = a[8];\n\t\t\ta[8] += a[23];\n\t\t\ta[23] -= xr;\n\t\t\txr = a[9];\n\t\t\ta[9] += a[22];\n\t\t\ta[22] -= xr;\n\t\t\txr = a[24];\n\t\t\ta[24] += a[7];\n\t\t\ta[7] -= xr;\n\t\t\txr = a[25];\n\t\t\ta[25] += a[6];\n\t\t\ta[6] -= xr;\n\t\t\txr = a[4];\n\t\t\ta[4] += a[27];\n\t\t\ta[27] -= xr;\n\t\t\txr = a[5];\n\t\t\ta[5] += a[26];\n\t\t\ta[26] -= xr;\n\t\t\txr = a[20];\n\t\t\ta[20] += a[11];\n\t\t\ta[11] -= xr;\n\t\t\txr = a[21];\n\t\t\ta[21] += a[10];\n\t\t\ta[10] -= xr;\n\t\t\txr = a[12];\n\t\t\ta[12] += a[19];\n\t\t\ta[19] -= xr;\n\t\t\txr = a[13];\n\t\t\ta[13] += a[18];\n\t\t\ta[18] -= xr;\n\t\t\txr = a[28];\n\t\t\ta[28] += a[3];\n\t\t\ta[3] -= xr;\n\t\t\txr = a[29];\n\t\t\ta[29] += a[2];\n\t\t\ta[2] -= xr;\n\t\t}\n\t}\n\n\t/**\n\t * Function: Calculation of the MDCT In the case of long blocks (type 0,1,3)\n\t * there are 36 coefficents in the time domain and 18 in the frequency\n\t * domain.
\n\t * In the case of short blocks (type 2) there are 3 transformations with\n\t * short length. This leads to 12 coefficents in the time and 6 in the\n\t * frequency domain. In this case the results are stored side by side in the\n\t * vector out[].\n\t *\n\t * New layer3\n\t */\n\tfunction mdct_short(inout, inoutPos) {\n\t\tfor (var l = 0; l < 3; l++) {\n\t\t\tvar tc0, tc1, tc2, ts0, ts1, ts2;\n\n\t\t\tts0 = inout[inoutPos + 2 * 3] * win[Encoder_1.SHORT_TYPE][0]\n\t\t\t\t\t- inout[inoutPos + 5 * 3];\n\t\t\ttc0 = inout[inoutPos + 0 * 3] * win[Encoder_1.SHORT_TYPE][2]\n\t\t\t\t\t- inout[inoutPos + 3 * 3];\n\t\t\ttc1 = ts0 + tc0;\n\t\t\ttc2 = ts0 - tc0;\n\n\t\t\tts0 = inout[inoutPos + 5 * 3] * win[Encoder_1.SHORT_TYPE][0]\n\t\t\t\t\t+ inout[inoutPos + 2 * 3];\n\t\t\ttc0 = inout[inoutPos + 3 * 3] * win[Encoder_1.SHORT_TYPE][2]\n\t\t\t\t\t+ inout[inoutPos + 0 * 3];\n\t\t\tts1 = ts0 + tc0;\n\t\t\tts2 = -ts0 + tc0;\n\n\t\t\ttc0 = (inout[inoutPos + 1 * 3] * win[Encoder_1.SHORT_TYPE][1] - inout[inoutPos + 4 * 3]) * 2.069978111953089e-11;\n\t\t\t/*\n\t\t\t * tritab_s [ 1 ]\n\t\t\t */\n\t\t\tts0 = (inout[inoutPos + 4 * 3] * win[Encoder_1.SHORT_TYPE][1] + inout[inoutPos + 1 * 3]) * 2.069978111953089e-11;\n\t\t\t/*\n\t\t\t * tritab_s [ 1 ]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 0] = tc1 * 1.907525191737280e-11 + tc0;\n\t\t\t/*\n\t\t\t * tritab_s[ 2 ]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 5] = -ts1 * 1.907525191737280e-11 + ts0;\n\t\t\t/*\n\t\t\t * tritab_s[0 ]\n\t\t\t */\n\t\t\ttc2 = tc2 * 0.86602540378443870761 * 1.907525191737281e-11;\n\t\t\t/*\n\t\t\t * tritab_s[ 2]\n\t\t\t */\n\t\t\tts1 = ts1 * 0.5 * 1.907525191737281e-11 + ts0;\n\t\t\tinout[inoutPos + 3 * 1] = tc2 - ts1;\n\t\t\tinout[inoutPos + 3 * 2] = tc2 + ts1;\n\n\t\t\ttc1 = tc1 * 0.5 * 1.907525191737281e-11 - tc0;\n\t\t\tts2 = ts2 * 0.86602540378443870761 * 1.907525191737281e-11;\n\t\t\t/*\n\t\t\t * tritab_s[ 0]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 3] = tc1 + ts2;\n\t\t\tinout[inoutPos + 3 * 4] = tc1 - ts2;\n\n\t\t\tinoutPos++;\n\t\t}\n\t}\n\n\tfunction mdct_long(out, outPos, _in) {\n\t\tvar ct, st;\n\t\t{\n\t\t\tvar tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8;\n\t\t\t/* 1,2, 5,6, 9,10, 13,14, 17 */\n\t\t\ttc1 = _in[17] - _in[9];\n\t\t\ttc3 = _in[15] - _in[11];\n\t\t\ttc4 = _in[14] - _in[12];\n\t\t\tts5 = _in[0] + _in[8];\n\t\t\tts6 = _in[1] + _in[7];\n\t\t\tts7 = _in[2] + _in[6];\n\t\t\tts8 = _in[3] + _in[5];\n\n\t\t\tout[outPos + 17] = (ts5 + ts7 - ts8) - (ts6 - _in[4]);\n\t\t\tst = (ts5 + ts7 - ts8) * cx[12 + 7] + (ts6 - _in[4]);\n\t\t\tct = (tc1 - tc3 - tc4) * cx[12 + 6];\n\t\t\tout[outPos + 5] = ct + st;\n\t\t\tout[outPos + 6] = ct - st;\n\n\t\t\ttc2 = (_in[16] - _in[10]) * cx[12 + 6];\n\t\t\tts6 = ts6 * cx[12 + 7] + _in[4];\n\t\t\tct = tc1 * cx[12 + 0] + tc2 + tc3 * cx[12 + 1] + tc4 * cx[12 + 2];\n\t\t\tst = -ts5 * cx[12 + 4] + ts6 - ts7 * cx[12 + 5] + ts8 * cx[12 + 3];\n\t\t\tout[outPos + 1] = ct + st;\n\t\t\tout[outPos + 2] = ct - st;\n\n\t\t\tct = tc1 * cx[12 + 1] - tc2 - tc3 * cx[12 + 2] + tc4 * cx[12 + 0];\n\t\t\tst = -ts5 * cx[12 + 5] + ts6 - ts7 * cx[12 + 3] + ts8 * cx[12 + 4];\n\t\t\tout[outPos + 9] = ct + st;\n\t\t\tout[outPos + 10] = ct - st;\n\n\t\t\tct = tc1 * cx[12 + 2] - tc2 + tc3 * cx[12 + 0] - tc4 * cx[12 + 1];\n\t\t\tst = ts5 * cx[12 + 3] - ts6 + ts7 * cx[12 + 4] - ts8 * cx[12 + 5];\n\t\t\tout[outPos + 13] = ct + st;\n\t\t\tout[outPos + 14] = ct - st;\n\t\t}\n\t\t{\n\t\t\tvar ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8;\n\n\t\t\tts1 = _in[8] - _in[0];\n\t\t\tts3 = _in[6] - _in[2];\n\t\t\tts4 = _in[5] - _in[3];\n\t\t\ttc5 = _in[17] + _in[9];\n\t\t\ttc6 = _in[16] + _in[10];\n\t\t\ttc7 = _in[15] + _in[11];\n\t\t\ttc8 = _in[14] + _in[12];\n\n\t\t\tout[outPos + 0] = (tc5 + tc7 + tc8) + (tc6 + _in[13]);\n\t\t\tct = (tc5 + tc7 + tc8) * cx[12 + 7] - (tc6 + _in[13]);\n\t\t\tst = (ts1 - ts3 + ts4) * cx[12 + 6];\n\t\t\tout[outPos + 11] = ct + st;\n\t\t\tout[outPos + 12] = ct - st;\n\n\t\t\tts2 = (_in[7] - _in[1]) * cx[12 + 6];\n\t\t\ttc6 = _in[13] - tc6 * cx[12 + 7];\n\t\t\tct = tc5 * cx[12 + 3] - tc6 + tc7 * cx[12 + 4] + tc8 * cx[12 + 5];\n\t\t\tst = ts1 * cx[12 + 2] + ts2 + ts3 * cx[12 + 0] + ts4 * cx[12 + 1];\n\t\t\tout[outPos + 3] = ct + st;\n\t\t\tout[outPos + 4] = ct - st;\n\n\t\t\tct = -tc5 * cx[12 + 5] + tc6 - tc7 * cx[12 + 3] - tc8 * cx[12 + 4];\n\t\t\tst = ts1 * cx[12 + 1] + ts2 - ts3 * cx[12 + 2] - ts4 * cx[12 + 0];\n\t\t\tout[outPos + 7] = ct + st;\n\t\t\tout[outPos + 8] = ct - st;\n\n\t\t\tct = -tc5 * cx[12 + 4] + tc6 - tc7 * cx[12 + 5] - tc8 * cx[12 + 3];\n\t\t\tst = ts1 * cx[12 + 0] - ts2 + ts3 * cx[12 + 1] - ts4 * cx[12 + 2];\n\t\t\tout[outPos + 15] = ct + st;\n\t\t\tout[outPos + 16] = ct - st;\n\t\t}\n\t}\n\n\tthis.mdct_sub48 = function(gfc, w0, w1) {\n\t\tvar wk = w0;\n\t\tvar wkPos = 286;\n\t\t/* thinking cache performance, ch->gr loop is better than gr->ch loop */\n\t\tfor (var ch = 0; ch < gfc.channels_out; ch++) {\n\t\t\tfor (var gr = 0; gr < gfc.mode_gr; gr++) {\n\t\t\t\tvar band;\n\t\t\t\tvar gi = (gfc.l3_side.tt[gr][ch]);\n\t\t\t\tvar mdct_enc = gi.xr;\n\t\t\t\tvar mdct_encPos = 0;\n\t\t\t\tvar samp = gfc.sb_sample[ch][1 - gr];\n\t\t\t\tvar sampPos = 0;\n\n\t\t\t\tfor (var k = 0; k < 18 / 2; k++) {\n\t\t\t\t\twindow_subband(wk, wkPos, samp[sampPos]);\n\t\t\t\t\twindow_subband(wk, wkPos + 32, samp[sampPos + 1]);\n\t\t\t\t\tsampPos += 2;\n\t\t\t\t\twkPos += 64;\n\t\t\t\t\t/*\n\t\t\t\t\t * Compensate for inversion in the analysis filter\n\t\t\t\t\t */\n\t\t\t\t\tfor (band = 1; band < 32; band += 2) {\n\t\t\t\t\t\tsamp[sampPos - 1][band] *= -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Perform imdct of 18 previous subband samples + 18 current\n\t\t\t\t * subband samples\n\t\t\t\t */\n\t\t\t\tfor (band = 0; band < 32; band++, mdct_encPos += 18) {\n\t\t\t\t\tvar type = gi.block_type;\n\t\t\t\t\tvar band0 = gfc.sb_sample[ch][gr];\n\t\t\t\t\tvar band1 = gfc.sb_sample[ch][1 - gr];\n\t\t\t\t\tif (gi.mixed_block_flag != 0 && band < 2)\n\t\t\t\t\t\ttype = 0;\n\t\t\t\t\tif (gfc.amp_filter[band] < 1e-12) {\n\t\t\t\t\t\tArrays$6.fill(mdct_enc, mdct_encPos + 0,\n\t\t\t\t\t\t\t\tmdct_encPos + 18, 0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (gfc.amp_filter[band] < 1.0) {\n\t\t\t\t\t\t\tfor (var k = 0; k < 18; k++)\n\t\t\t\t\t\t\t\tband1[k][order[band]] *= gfc.amp_filter[band];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (type == Encoder_1.SHORT_TYPE) {\n\t\t\t\t\t\t\tfor (var k = -NS / 4; k < 0; k++) {\n\t\t\t\t\t\t\t\tvar w = win[Encoder_1.SHORT_TYPE][k + 3];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 9] = band0[9 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band0[8 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 18] = band0[14 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band0[15 + k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 10] = band0[15 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band0[14 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 19] = band1[2 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band1[3 + k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 11] = band1[3 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band1[2 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 20] = band1[8 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band1[9 + k][order[band]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmdct_short(mdct_enc, mdct_encPos);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar work = new_float$6(18);\n\t\t\t\t\t\t\tfor (var k = -NL / 4; k < 0; k++) {\n\t\t\t\t\t\t\t\tvar a, b;\n\t\t\t\t\t\t\t\ta = win[type][k + 27]\n\t\t\t\t\t\t\t\t\t\t* band1[k + 9][order[band]]\n\t\t\t\t\t\t\t\t\t\t+ win[type][k + 36]\n\t\t\t\t\t\t\t\t\t\t* band1[8 - k][order[band]];\n\t\t\t\t\t\t\t\tb = win[type][k + 9]\n\t\t\t\t\t\t\t\t\t\t* band0[k + 9][order[band]]\n\t\t\t\t\t\t\t\t\t\t- win[type][k + 18]\n\t\t\t\t\t\t\t\t\t\t* band0[8 - k][order[band]];\n\t\t\t\t\t\t\t\twork[k + 9] = a - b * tantab_l[3 + k + 9];\n\t\t\t\t\t\t\t\twork[k + 18] = a * tantab_l[3 + k + 9] + b;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmdct_long(mdct_enc, mdct_encPos, work);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t/*\n\t\t\t\t\t * Perform aliasing reduction butterfly\n\t\t\t\t\t */\n\t\t\t\t\tif (type != Encoder_1.SHORT_TYPE && band != 0) {\n\t\t\t\t\t\tfor (var k = 7; k >= 0; --k) {\n\t\t\t\t\t\t\tvar bu, bd;\n\t\t\t\t\t\t\tbu = mdct_enc[mdct_encPos + k] * ca[20 + k]\n\t\t\t\t\t\t\t\t\t+ mdct_enc[mdct_encPos + -1 - k]\n\t\t\t\t\t\t\t\t\t* cs[28 + k];\n\t\t\t\t\t\t\tbd = mdct_enc[mdct_encPos + k] * cs[28 + k]\n\t\t\t\t\t\t\t\t\t- mdct_enc[mdct_encPos + -1 - k]\n\t\t\t\t\t\t\t\t\t* ca[20 + k];\n\n\t\t\t\t\t\t\tmdct_enc[mdct_encPos + -1 - k] = bu;\n\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k] = bd;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\twk = w1;\n\t\t\twkPos = 286;\n\t\t\tif (gfc.mode_gr == 1) {\n\t\t\t\tfor (var i = 0; i < 18; i++) {\n\t\t\t\t\tSystem$6.arraycopy(gfc.sb_sample[ch][1][i], 0,\n\t\t\t\t\t\t\tgfc.sb_sample[ch][0][i], 0, 32);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\nvar NewMDCT_1 = NewMDCT;\n\nvar System$7 = common.System;\nvar new_float$7 = common.new_float;\nvar new_float_n$7 = common.new_float_n;\nfunction III_psy_xmin() {\n this.l = new_float$7(Encoder_1.SBMAX_l);\n this.s = new_float_n$7([Encoder_1.SBMAX_s, 3]);\n\n var self = this;\n this.assign = function (iii_psy_xmin) {\n System$7.arraycopy(iii_psy_xmin.l, 0, self.l, 0, Encoder_1.SBMAX_l);\n for (var i = 0; i < Encoder_1.SBMAX_s; i++) {\n for (var j = 0; j < 3; j++) {\n self.s[i][j] = iii_psy_xmin.s[i][j];\n }\n }\n };\n}\n\nvar III_psy_xmin_1 = III_psy_xmin;\n\n//package mp3;\n\n\n\nfunction III_psy_ratio() {\n\tthis.thm = new III_psy_xmin_1();\n\tthis.en = new III_psy_xmin_1();\n}\n\nvar III_psy_ratio_1 = III_psy_ratio;\n\nvar System$5 = common.System;\nvar VbrMode$5 = common.VbrMode;\nvar new_array_n$5 = common.new_array_n;\nvar new_float$5 = common.new_float;\nvar new_float_n$5 = common.new_float_n;\nvar new_int$5 = common.new_int;\nvar assert$5 = common.assert;\n\n/**\n * ENCDELAY The encoder delay.\n *\n * Minimum allowed is MDCTDELAY (see below)\n *\n * The first 96 samples will be attenuated, so using a value less than 96\n * will result in corrupt data for the first 96-ENCDELAY samples.\n *\n * suggested: 576 set to 1160 to sync with FhG.\n */\nEncoder$2.ENCDELAY = 576;\n/**\n * make sure there is at least one complete frame after the last frame\n * containing real data\n *\n * Using a value of 288 would be sufficient for a a very sophisticated\n * decoder that can decode granule-by-granule instead of frame by frame. But\n * lets not assume this, and assume the decoder will not decode frame N\n * unless it also has data for frame N+1\n */\nEncoder$2.POSTDELAY = 1152;\n\n/**\n * delay of the MDCT used in mdct.c original ISO routines had a delay of\n * 528! Takehiro's routines:\n */\nEncoder$2.MDCTDELAY = 48;\nEncoder$2.FFTOFFSET = (224 + Encoder$2.MDCTDELAY);\n\n/**\n * Most decoders, including the one we use, have a delay of 528 samples.\n */\nEncoder$2.DECDELAY = 528;\n\n/**\n * number of subbands\n */\nEncoder$2.SBLIMIT = 32;\n\n/**\n * parition bands bands\n */\nEncoder$2.CBANDS = 64;\n\n/**\n * number of critical bands/scale factor bands where masking is computed\n */\nEncoder$2.SBPSY_l = 21;\nEncoder$2.SBPSY_s = 12;\n\n/**\n * total number of scalefactor bands encoded\n */\nEncoder$2.SBMAX_l = 22;\nEncoder$2.SBMAX_s = 13;\nEncoder$2.PSFB21 = 6;\nEncoder$2.PSFB12 = 6;\n\n/**\n * FFT sizes\n */\nEncoder$2.BLKSIZE = 1024;\nEncoder$2.HBLKSIZE = (Encoder$2.BLKSIZE / 2 + 1);\nEncoder$2.BLKSIZE_s = 256;\nEncoder$2.HBLKSIZE_s = (Encoder$2.BLKSIZE_s / 2 + 1);\n\nEncoder$2.NORM_TYPE = 0;\nEncoder$2.START_TYPE = 1;\nEncoder$2.SHORT_TYPE = 2;\nEncoder$2.STOP_TYPE = 3;\n\n/**\n *
\n * Mode Extention:\n * When we are in stereo mode, there are 4 possible methods to store these\n * two channels. The stereo modes -m? are using a subset of them.\n *\n *  -ms: MPG_MD_LR_LR\n *  -mj: MPG_MD_LR_LR and MPG_MD_MS_LR\n *  -mf: MPG_MD_MS_LR\n *  -mi: all\n * 
\n */\nEncoder$2.MPG_MD_LR_LR = 0;\nEncoder$2.MPG_MD_LR_I = 1;\nEncoder$2.MPG_MD_MS_LR = 2;\nEncoder$2.MPG_MD_MS_I = 3;\n\nEncoder$2.fircoef = [-0.0207887 * 5, -0.0378413 * 5,\n -0.0432472 * 5, -0.031183 * 5, 7.79609e-18 * 5, 0.0467745 * 5,\n 0.10091 * 5, 0.151365 * 5, 0.187098 * 5];\n\nfunction Encoder$2() {\n var NewMDCT = NewMDCT_1;\n var III_psy_ratio = III_psy_ratio_1;\n\n var FFTOFFSET = Encoder$2.FFTOFFSET;\n var MPG_MD_MS_LR = Encoder$2.MPG_MD_MS_LR;\n //BitStream bs;\n //PsyModel psy;\n //VBRTag vbr;\n //QuantizePVT qupvt;\n var bs = null;\n this.psy = null;\n var psy = null;\n var vbr = null;\n var qupvt = null;\n\n //public final void setModules(BitStream bs, PsyModel psy, QuantizePVT qupvt,\n // VBRTag vbr) {\n this.setModules = function (_bs, _psy, _qupvt, _vbr) {\n bs = _bs;\n this.psy = _psy;\n psy = _psy;\n vbr = _vbr;\n qupvt = _qupvt;\n };\n\n var newMDCT = new NewMDCT();\n\n /***********************************************************************\n *\n * encoder and decoder delays\n *\n ***********************************************************************/\n\n /**\n *
\n     * layer III enc->dec delay:  1056 (1057?)   (observed)\n     * layer  II enc->dec delay:   480  (481?)   (observed)\n     *\n     * polyphase 256-16             (dec or enc)        = 240\n     * mdct      256+32  (9*32)     (dec or enc)        = 288\n     * total:    512+16\n     *\n     * My guess is that delay of polyphase filterbank is actualy 240.5\n     * (there are technical reasons for this, see postings in mp3encoder).\n     * So total Encode+Decode delay = ENCDELAY + 528 + 1\n     * 
\n */\n\n\n /**\n * auto-adjust of ATH, useful for low volume Gabriel Bouvigne 3 feb 2001\n *\n * modifies some values in gfp.internal_flags.ATH (gfc.ATH)\n */\n//private void adjust_ATH(final LameInternalFlags gfc) {\n function adjust_ATH(gfc) {\n var gr2_max, max_pow;\n\n if (gfc.ATH.useAdjust == 0) {\n gfc.ATH.adjust = 1.0;\n /* no adjustment */\n return;\n }\n\n /* jd - 2001 mar 12, 27, jun 30 */\n /* loudness based on equal loudness curve; */\n /* use granule with maximum combined loudness */\n max_pow = gfc.loudness_sq[0][0];\n gr2_max = gfc.loudness_sq[1][0];\n if (gfc.channels_out == 2) {\n max_pow += gfc.loudness_sq[0][1];\n gr2_max += gfc.loudness_sq[1][1];\n } else {\n max_pow += max_pow;\n gr2_max += gr2_max;\n }\n if (gfc.mode_gr == 2) {\n max_pow = Math.max(max_pow, gr2_max);\n }\n max_pow *= 0.5;\n /* max_pow approaches 1.0 for full band noise */\n\n /* jd - 2001 mar 31, jun 30 */\n /* user tuning of ATH adjustment region */\n max_pow *= gfc.ATH.aaSensitivityP;\n\n /*\n * adjust ATH depending on range of maximum value\n */\n\n /* jd - 2001 feb27, mar12,20, jun30, jul22 */\n /* continuous curves based on approximation */\n /* to GB's original values. */\n /* For an increase in approximate loudness, */\n /* set ATH adjust to adjust_limit immediately */\n /* after a delay of one frame. */\n /* For a loudness decrease, reduce ATH adjust */\n /* towards adjust_limit gradually. */\n /* max_pow is a loudness squared or a power. */\n if (max_pow > 0.03125) { /* ((1 - 0.000625)/ 31.98) from curve below */\n if (gfc.ATH.adjust >= 1.0) {\n gfc.ATH.adjust = 1.0;\n } else {\n /* preceding frame has lower ATH adjust; */\n /* ascend only to the preceding adjust_limit */\n /* in case there is leading low volume */\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n gfc.ATH.adjustLimit = 1.0;\n } else { /* adjustment curve */\n /* about 32 dB maximum adjust (0.000625) */\n var adj_lim_new = 31.98 * max_pow + 0.000625;\n if (gfc.ATH.adjust >= adj_lim_new) { /* descend gradually */\n gfc.ATH.adjust *= adj_lim_new * 0.075 + 0.925;\n if (gfc.ATH.adjust < adj_lim_new) { /* stop descent */\n gfc.ATH.adjust = adj_lim_new;\n }\n } else { /* ascend */\n if (gfc.ATH.adjustLimit >= adj_lim_new) {\n gfc.ATH.adjust = adj_lim_new;\n } else {\n /* preceding frame has lower ATH adjust; */\n /* ascend only to the preceding adjust_limit */\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n }\n gfc.ATH.adjustLimit = adj_lim_new;\n }\n }\n\n /**\n *
\n     *  some simple statistics\n     *\n     *  bitrate index 0: free bitrate . not allowed in VBR mode\n     *  : bitrates, kbps depending on MPEG version\n     *  bitrate index 15: forbidden\n     *\n     *  mode_ext:\n     *  0:  LR\n     *  1:  LR-i\n     *  2:  MS\n     *  3:  MS-i\n     * 
\n */\n function updateStats(gfc) {\n var gr, ch;\n assert$5(0 <= gfc.bitrate_index && gfc.bitrate_index < 16);\n assert$5(0 <= gfc.mode_ext && gfc.mode_ext < 4);\n\n /* count bitrate indices */\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][4]++;\n gfc.bitrate_stereoMode_Hist[15][4]++;\n\n /* count 'em for every mode extension in case of 2 channel encoding */\n if (gfc.channels_out == 2) {\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][gfc.mode_ext]++;\n gfc.bitrate_stereoMode_Hist[15][gfc.mode_ext]++;\n }\n for (gr = 0; gr < gfc.mode_gr; ++gr) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n var bt = gfc.l3_side.tt[gr][ch].block_type | 0;\n if (gfc.l3_side.tt[gr][ch].mixed_block_flag != 0)\n bt = 4;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][bt]++;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][5]++;\n gfc.bitrate_blockType_Hist[15][bt]++;\n gfc.bitrate_blockType_Hist[15][5]++;\n }\n }\n }\n\n function lame_encode_frame_init(gfp, inbuf) {\n var gfc = gfp.internal_flags;\n\n var ch, gr;\n\n if (gfc.lame_encode_frame_init == 0) {\n /* prime the MDCT/polyphase filterbank with a short block */\n var i, j;\n var primebuff0 = new_float$5(286 + 1152 + 576);\n var primebuff1 = new_float$5(286 + 1152 + 576);\n gfc.lame_encode_frame_init = 1;\n for (i = 0, j = 0; i < 286 + 576 * (1 + gfc.mode_gr); ++i) {\n if (i < 576 * gfc.mode_gr) {\n primebuff0[i] = 0;\n if (gfc.channels_out == 2)\n primebuff1[i] = 0;\n } else {\n primebuff0[i] = inbuf[0][j];\n if (gfc.channels_out == 2)\n primebuff1[i] = inbuf[1][j];\n ++j;\n }\n }\n /* polyphase filtering / mdct */\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder$2.SHORT_TYPE;\n }\n }\n newMDCT.mdct_sub48(gfc, primebuff0, primebuff1);\n\n /* check FFT will not use a negative starting offset */\n assert$5(576 >= Encoder$2.FFTOFFSET);\n /* check if we have enough data for FFT */\n assert$5(gfc.mf_size >= (Encoder$2.BLKSIZE + gfp.framesize - Encoder$2.FFTOFFSET));\n /* check if we have enough data for polyphase filterbank */\n assert$5(gfc.mf_size >= (512 + gfp.framesize - 32));\n }\n\n }\n\n /**\n *
\n     * encodeframe()           Layer 3\n     *\n     * encode a single frame\n     *\n     *\n     *    lame_encode_frame()\n     *\n     *\n     *                           gr 0            gr 1\n     *    inbuf:           |--------------|--------------|--------------|\n     *\n     *\n     *    Polyphase (18 windows, each shifted 32)\n     *    gr 0:\n     *    window1          <----512---.\n     *    window18                 <----512---.\n     *\n     *    gr 1:\n     *    window1                         <----512---.\n     *    window18                                <----512---.\n     *\n     *\n     *\n     *    MDCT output:  |--------------|--------------|--------------|\n     *\n     *    FFT's                    <---------1024---------.\n     *                                             <---------1024-------.\n     *\n     *\n     *\n     *        inbuf = buffer of PCM data size=MP3 framesize\n     *        encoder acts on inbuf[ch][0], but output is delayed by MDCTDELAY\n     *        so the MDCT coefficints are from inbuf[ch][-MDCTDELAY]\n     *\n     *        psy-model FFT has a 1 granule delay, so we feed it data for the\n     *        next granule.\n     *        FFT is centered over granule:  224+576+224\n     *        So FFT starts at:   576-224-MDCTDELAY\n     *\n     *        MPEG2:  FFT ends at:  BLKSIZE+576-224-MDCTDELAY      (1328)\n     *        MPEG1:  FFT ends at:  BLKSIZE+2*576-224-MDCTDELAY    (1904)\n     *\n     *        MPEG2:  polyphase first window:  [0..511]\n     *                          18th window:   [544..1055]          (1056)\n     *        MPEG1:            36th window:   [1120..1631]         (1632)\n     *                data needed:  512+framesize-32\n     *\n     *        A close look newmdct.c shows that the polyphase filterbank\n     *        only uses data from [0..510] for each window.  Perhaps because the window\n     *        used by the filterbank is zero for the last point, so Takehiro's\n     *        code doesn't bother to compute with it.\n     *\n     *        FFT starts at 576-224-MDCTDELAY (304)  = 576-FFTOFFSET\n     *\n     * 
\n */\n\n\n this.lame_encode_mp3_frame = function (gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var mp3count;\n var masking_LR = new_array_n$5([2, 2]);\n /*\n * LR masking &\n * energy\n */\n masking_LR[0][0] = new III_psy_ratio();\n masking_LR[0][1] = new III_psy_ratio();\n masking_LR[1][0] = new III_psy_ratio();\n masking_LR[1][1] = new III_psy_ratio();\n var masking_MS = new_array_n$5([2, 2]);\n /* MS masking & energy */\n masking_MS[0][0] = new III_psy_ratio();\n masking_MS[0][1] = new III_psy_ratio();\n masking_MS[1][0] = new III_psy_ratio();\n masking_MS[1][1] = new III_psy_ratio();\n //III_psy_ratio masking[][];\n var masking;\n /* pointer to selected maskings */\n var inbuf = [null, null];\n var gfc = gfp.internal_flags;\n\n var tot_ener = new_float_n$5([2, 4]);\n var ms_ener_ratio = [.5, .5];\n var pe = [[0., 0.], [0., 0.]];\n var pe_MS = [[0., 0.], [0., 0.]];\n\n//float[][] pe_use;\n var pe_use;\n\n var ch, gr;\n\n inbuf[0] = inbuf_l;\n inbuf[1] = inbuf_r;\n\n if (gfc.lame_encode_frame_init == 0) {\n /* first run? */\n lame_encode_frame_init(gfp, inbuf);\n\n }\n\n /********************** padding *****************************/\n /**\n *
\n         * padding method as described in\n         * \"MPEG-Layer3 / Bitstream Syntax and Decoding\"\n         * by Martin Sieler, Ralph Sperschneider\n         *\n         * note: there is no padding for the very first frame\n         *\n         * Robert Hegemann 2000-06-22\n         * 
\n */\n gfc.padding = 0;\n if ((gfc.slot_lag -= gfc.frac_SpF) < 0) {\n gfc.slot_lag += gfp.out_samplerate;\n gfc.padding = 1;\n }\n\n /****************************************\n * Stage 1: psychoacoustic model *\n ****************************************/\n\n if (gfc.psymodel != 0) {\n /*\n * psychoacoustic model psy model has a 1 granule (576) delay that\n * we must compensate for (mt 6/99).\n */\n var ret;\n var bufp = [null, null];\n /* address of beginning of left & right granule */\n var bufpPos = 0;\n /* address of beginning of left & right granule */\n var blocktype = new_int$5(2);\n\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n\n for (ch = 0; ch < gfc.channels_out; ch++) {\n bufp[ch] = inbuf[ch];\n bufpPos = 576 + gr * 576 - Encoder$2.FFTOFFSET;\n }\n if (gfp.VBR == VbrMode$5.vbr_mtrh || gfp.VBR == VbrMode$5.vbr_mt) {\n ret = psy.L3psycho_anal_vbr(gfp, bufp, bufpPos, gr,\n masking_LR, masking_MS, pe[gr], pe_MS[gr],\n tot_ener[gr], blocktype);\n } else {\n ret = psy.L3psycho_anal_ns(gfp, bufp, bufpPos, gr,\n masking_LR, masking_MS, pe[gr], pe_MS[gr],\n tot_ener[gr], blocktype);\n }\n if (ret != 0)\n return -4;\n\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3];\n if (ms_ener_ratio[gr] > 0)\n ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr];\n }\n\n /* block type flags */\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n cod_info.block_type = blocktype[ch];\n cod_info.mixed_block_flag = 0;\n }\n }\n } else {\n /* no psy model */\n for (gr = 0; gr < gfc.mode_gr; gr++)\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder$2.NORM_TYPE;\n gfc.l3_side.tt[gr][ch].mixed_block_flag = 0;\n pe_MS[gr][ch] = pe[gr][ch] = 700;\n }\n }\n\n /* auto-adjust of ATH, useful for low volume */\n adjust_ATH(gfc);\n\n /****************************************\n * Stage 2: MDCT *\n ****************************************/\n\n /* polyphase filtering / mdct */\n newMDCT.mdct_sub48(gfc, inbuf[0], inbuf[1]);\n\n /****************************************\n * Stage 3: MS/LR decision *\n ****************************************/\n\n /* Here will be selected MS or LR coding of the 2 stereo channels */\n gfc.mode_ext = Encoder$2.MPG_MD_LR_LR;\n\n if (gfp.force_ms) {\n gfc.mode_ext = Encoder$2.MPG_MD_MS_LR;\n } else if (gfp.mode == MPEGMode.JOINT_STEREO) {\n /*\n * ms_ratio = is scaled, for historical reasons, to look like a\n * ratio of side_channel / total. 0 = signal is 100% mono .5 = L & R\n * uncorrelated\n */\n\n /**\n *
\n             * [0] and [1] are the results for the two granules in MPEG-1,\n             * in MPEG-2 it's only a faked averaging of the same value\n             * _prev is the value of the last granule of the previous frame\n             * _next is the value of the first granule of the next frame\n             * 
\n */\n\n var sum_pe_MS = 0.;\n var sum_pe_LR = 0.;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n sum_pe_MS += pe_MS[gr][ch];\n sum_pe_LR += pe[gr][ch];\n }\n }\n\n /* based on PE: M/S coding would not use much more bits than L/R */\n if (sum_pe_MS <= 1.00 * sum_pe_LR) {\n\n var gi0 = gfc.l3_side.tt[0];\n var gi1 = gfc.l3_side.tt[gfc.mode_gr - 1];\n\n if (gi0[0].block_type == gi0[1].block_type\n && gi1[0].block_type == gi1[1].block_type) {\n\n gfc.mode_ext = Encoder$2.MPG_MD_MS_LR;\n }\n }\n }\n\n /* bit and noise allocation */\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n masking = masking_MS;\n /* use MS masking */\n pe_use = pe_MS;\n } else {\n masking = masking_LR;\n /* use LR masking */\n pe_use = pe;\n }\n\n /* copy data for MP3 frame analyzer */\n if (gfp.analysis && gfc.pinfo != null) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.pinfo.ms_ratio[gr] = gfc.ms_ratio[gr];\n gfc.pinfo.ms_ener_ratio[gr] = ms_ener_ratio[gr];\n gfc.pinfo.blocktype[gr][ch] = gfc.l3_side.tt[gr][ch].block_type;\n gfc.pinfo.pe[gr][ch] = pe_use[gr][ch];\n System$5.arraycopy(gfc.l3_side.tt[gr][ch].xr, 0,\n gfc.pinfo.xr[gr][ch], 0, 576);\n /*\n * in psymodel, LR and MS data was stored in pinfo. switch\n * to MS data:\n */\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n gfc.pinfo.ers[gr][ch] = gfc.pinfo.ers[gr][ch + 2];\n System$5.arraycopy(gfc.pinfo.energy[gr][ch + 2], 0,\n gfc.pinfo.energy[gr][ch], 0,\n gfc.pinfo.energy[gr][ch].length);\n }\n }\n }\n }\n\n /****************************************\n * Stage 4: quantization loop *\n ****************************************/\n\n if (gfp.VBR == VbrMode$5.vbr_off || gfp.VBR == VbrMode$5.vbr_abr) {\n\n var i;\n var f;\n\n for (i = 0; i < 18; i++)\n gfc.nsPsy.pefirbuf[i] = gfc.nsPsy.pefirbuf[i + 1];\n\n f = 0.0;\n for (gr = 0; gr < gfc.mode_gr; gr++)\n for (ch = 0; ch < gfc.channels_out; ch++)\n f += pe_use[gr][ch];\n gfc.nsPsy.pefirbuf[18] = f;\n\n f = gfc.nsPsy.pefirbuf[9];\n for (i = 0; i < 9; i++)\n f += (gfc.nsPsy.pefirbuf[i] + gfc.nsPsy.pefirbuf[18 - i])\n * Encoder$2.fircoef[i];\n\n f = (670 * 5 * gfc.mode_gr * gfc.channels_out) / f;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n pe_use[gr][ch] *= f;\n }\n }\n }\n gfc.iteration_loop.iteration_loop(gfp, pe_use, ms_ener_ratio, masking);\n\n /****************************************\n * Stage 5: bitstream formatting *\n ****************************************/\n\n /* write the frame to the bitstream */\n bs.format_bitstream(gfp);\n\n /* copy mp3 bit buffer into array */\n mp3count = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 1);\n\n if (gfp.bWriteVbrTag)\n vbr.addVbrFrame(gfp);\n\n if (gfp.analysis && gfc.pinfo != null) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var j;\n for (j = 0; j < FFTOFFSET; j++)\n gfc.pinfo.pcmdata[ch][j] = gfc.pinfo.pcmdata[ch][j\n + gfp.framesize];\n for (j = FFTOFFSET; j < 1600; j++) {\n gfc.pinfo.pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET];\n }\n }\n qupvt.set_frame_pinfo(gfp, masking);\n }\n\n updateStats(gfc);\n\n return mp3count;\n };\n}\n\n\nvar Encoder_1 = Encoder$2;\n\nvar Util$4 = common.Util;\nvar new_float$4 = common.new_float;\nfunction FFT() {\n\n var window = new_float$4(Encoder_1.BLKSIZE);\n var window_s = new_float$4(Encoder_1.BLKSIZE_s / 2);\n\n var costab = [\n 9.238795325112867e-01, 3.826834323650898e-01,\n 9.951847266721969e-01, 9.801714032956060e-02,\n 9.996988186962042e-01, 2.454122852291229e-02,\n 9.999811752826011e-01, 6.135884649154475e-03\n ];\n\n function fht(fz, fzPos, n) {\n var tri = 0;\n var k4;\n var fi;\n var gi;\n\n n <<= 1;\n /* to get BLKSIZE, because of 3DNow! ASM routine */\n var fn = fzPos + n;\n k4 = 4;\n do {\n var s1, c1;\n var i, k1, k2, k3, kx;\n kx = k4 >> 1;\n k1 = k4;\n k2 = k4 << 1;\n k3 = k2 + k1;\n k4 = k2 << 1;\n fi = fzPos;\n gi = fi + kx;\n do {\n var f0, f1, f2, f3;\n f1 = fz[fi + 0] - fz[fi + k1];\n f0 = fz[fi + 0] + fz[fi + k1];\n f3 = fz[fi + k2] - fz[fi + k3];\n f2 = fz[fi + k2] + fz[fi + k3];\n fz[fi + k2] = f0 - f2;\n fz[fi + 0] = f0 + f2;\n fz[fi + k3] = f1 - f3;\n fz[fi + k1] = f1 + f3;\n f1 = fz[gi + 0] - fz[gi + k1];\n f0 = fz[gi + 0] + fz[gi + k1];\n f3 = (Util$4.SQRT2 * fz[gi + k3]);\n f2 = (Util$4.SQRT2 * fz[gi + k2]);\n fz[gi + k2] = f0 - f2;\n fz[gi + 0] = f0 + f2;\n fz[gi + k3] = f1 - f3;\n fz[gi + k1] = f1 + f3;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c1 = costab[tri + 0];\n s1 = costab[tri + 1];\n for (i = 1; i < kx; i++) {\n var c2, s2;\n c2 = 1 - (2 * s1) * s1;\n s2 = (2 * s1) * c1;\n fi = fzPos + i;\n gi = fzPos + k1 - i;\n do {\n var a, b, g0, f0, f1, g1, f2, g2, f3, g3;\n b = s2 * fz[fi + k1] - c2 * fz[gi + k1];\n a = c2 * fz[fi + k1] + s2 * fz[gi + k1];\n f1 = fz[fi + 0] - a;\n f0 = fz[fi + 0] + a;\n g1 = fz[gi + 0] - b;\n g0 = fz[gi + 0] + b;\n b = s2 * fz[fi + k3] - c2 * fz[gi + k3];\n a = c2 * fz[fi + k3] + s2 * fz[gi + k3];\n f3 = fz[fi + k2] - a;\n f2 = fz[fi + k2] + a;\n g3 = fz[gi + k2] - b;\n g2 = fz[gi + k2] + b;\n b = s1 * f2 - c1 * g3;\n a = c1 * f2 + s1 * g3;\n fz[fi + k2] = f0 - a;\n fz[fi + 0] = f0 + a;\n fz[gi + k3] = g1 - b;\n fz[gi + k1] = g1 + b;\n b = c1 * g2 - s1 * f3;\n a = s1 * g2 + c1 * f3;\n fz[gi + k2] = g0 - a;\n fz[gi + 0] = g0 + a;\n fz[fi + k3] = f1 - b;\n fz[fi + k1] = f1 + b;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c2 = c1;\n c1 = c2 * costab[tri + 0] - s1 * costab[tri + 1];\n s1 = c2 * costab[tri + 1] + s1 * costab[tri + 0];\n }\n tri += 2;\n } while (k4 < n);\n }\n\n var rv_tbl = [0x00, 0x80, 0x40,\n 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10,\n 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70,\n 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28,\n 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58,\n 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04,\n 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64,\n 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34,\n 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c,\n 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c,\n 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c,\n 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22,\n 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52,\n 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a,\n 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a,\n 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a,\n 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46,\n 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16,\n 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76,\n 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e,\n 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e,\n 0xde, 0x3e, 0xbe, 0x7e, 0xfe];\n\n this.fft_short = function (gfc, x_real, chn, buffer, bufPos) {\n for (var b = 0; b < 3; b++) {\n var x = Encoder_1.BLKSIZE_s / 2;\n var k = 0xffff & ((576 / 3) * (b + 1));\n var j = Encoder_1.BLKSIZE_s / 8 - 1;\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[j << 2] & 0xff;\n\n f0 = window_s[i] * buffer[chn][bufPos + i + k];\n w = window_s[0x7f - i] * buffer[chn][bufPos + i + k + 0x80];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 0x40] * buffer[chn][bufPos + i + k + 0x40];\n w = window_s[0x3f - i] * buffer[chn][bufPos + i + k + 0xc0];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x -= 4;\n x_real[b][x + 0] = f0 + f2;\n x_real[b][x + 2] = f0 - f2;\n x_real[b][x + 1] = f1 + f3;\n x_real[b][x + 3] = f1 - f3;\n\n f0 = window_s[i + 0x01] * buffer[chn][bufPos + i + k + 0x01];\n w = window_s[0x7e - i] * buffer[chn][bufPos + i + k + 0x81];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 0x41] * buffer[chn][bufPos + i + k + 0x41];\n w = window_s[0x3e - i] * buffer[chn][bufPos + i + k + 0xc1];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x_real[b][x + Encoder_1.BLKSIZE_s / 2 + 0] = f0 + f2;\n x_real[b][x + Encoder_1.BLKSIZE_s / 2 + 2] = f0 - f2;\n x_real[b][x + Encoder_1.BLKSIZE_s / 2 + 1] = f1 + f3;\n x_real[b][x + Encoder_1.BLKSIZE_s / 2 + 3] = f1 - f3;\n } while (--j >= 0);\n\n fht(x_real[b], x, Encoder_1.BLKSIZE_s / 2);\n /* BLKSIZE_s/2 because of 3DNow! ASM routine */\n /* BLKSIZE/2 because of 3DNow! ASM routine */\n }\n };\n\n this.fft_long = function (gfc, y, chn, buffer, bufPos) {\n var jj = Encoder_1.BLKSIZE / 8 - 1;\n var x = Encoder_1.BLKSIZE / 2;\n\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[jj] & 0xff;\n f0 = window[i] * buffer[chn][bufPos + i];\n w = window[i + 0x200] * buffer[chn][bufPos + i + 0x200];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window[i + 0x100] * buffer[chn][bufPos + i + 0x100];\n w = window[i + 0x300] * buffer[chn][bufPos + i + 0x300];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x -= 4;\n y[x + 0] = f0 + f2;\n y[x + 2] = f0 - f2;\n y[x + 1] = f1 + f3;\n y[x + 3] = f1 - f3;\n\n f0 = window[i + 0x001] * buffer[chn][bufPos + i + 0x001];\n w = window[i + 0x201] * buffer[chn][bufPos + i + 0x201];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window[i + 0x101] * buffer[chn][bufPos + i + 0x101];\n w = window[i + 0x301] * buffer[chn][bufPos + i + 0x301];\n f3 = f2 - w;\n f2 = f2 + w;\n\n y[x + Encoder_1.BLKSIZE / 2 + 0] = f0 + f2;\n y[x + Encoder_1.BLKSIZE / 2 + 2] = f0 - f2;\n y[x + Encoder_1.BLKSIZE / 2 + 1] = f1 + f3;\n y[x + Encoder_1.BLKSIZE / 2 + 3] = f1 - f3;\n } while (--jj >= 0);\n\n fht(y, x, Encoder_1.BLKSIZE / 2);\n /* BLKSIZE/2 because of 3DNow! ASM routine */\n };\n\n this.init_fft = function (gfc) {\n /* The type of window used here will make no real difference, but */\n /*\n * in the interest of merging nspsytune stuff - switch to blackman\n * window\n */\n for (var i = 0; i < Encoder_1.BLKSIZE; i++)\n /* blackman window */\n window[i] = (0.42 - 0.5 * Math.cos(2 * Math.PI * (i + .5)\n / Encoder_1.BLKSIZE) + 0.08 * Math.cos(4 * Math.PI * (i + .5)\n / Encoder_1.BLKSIZE));\n\n for (var i = 0; i < Encoder_1.BLKSIZE_s / 2; i++)\n window_s[i] = (0.5 * (1.0 - Math.cos(2.0 * Math.PI\n * (i + 0.5) / Encoder_1.BLKSIZE_s)));\n\n };\n\n}\n\nvar FFT_1 = FFT;\n\nvar VbrMode$3 = common.VbrMode;\nvar Float$3 = common.Float;\nvar ShortBlock$3 = common.ShortBlock;\nvar Util$3 = common.Util;\nvar Arrays$3 = common.Arrays;\nvar new_float$3 = common.new_float;\nvar new_float_n$3 = common.new_float_n;\nvar new_int$3 = common.new_int;\nvar assert$3 = common.assert;\n\n\n\n\nfunction PsyModel() {\n\n var fft = new FFT_1();\n\n var LOG10 = 2.30258509299404568402;\n\n var rpelev = 2;\n var rpelev2 = 16;\n var rpelev_s = 2;\n var rpelev2_s = 16;\n\n /* size of each partition band, in barks: */\n var DELBARK = .34;\n\n /* tuned for output level (sensitive to energy scale) */\n var VO_SCALE = (1. / (14752 * 14752) / (Encoder_1.BLKSIZE / 2));\n\n var temporalmask_sustain_sec = 0.01;\n\n var NS_PREECHO_ATT0 = 0.8;\n var NS_PREECHO_ATT1 = 0.6;\n var NS_PREECHO_ATT2 = 0.3;\n\n var NS_MSFIX = 3.5;\n\n var NSATTACKTHRE = 4.4;\n var NSATTACKTHRE_S = 25;\n\n var NSFIRLEN = 21;\n\n /* size of each partition band, in barks: */\n var LN_TO_LOG10 = 0.2302585093;\n\n function NON_LINEAR_SCALE_ENERGY(x) {\n return x;\n }\n\n /**\n *
\n     *       L3psycho_anal.  Compute psycho acoustics.\n     *\n     *       Data returned to the calling program must be delayed by one\n     *       granule.\n     *\n     *       This is done in two places.\n     *       If we do not need to know the blocktype, the copying\n     *       can be done here at the top of the program: we copy the data for\n     *       the last granule (computed during the last call) before it is\n     *       overwritten with the new data.  It looks like this:\n     *\n     *       0. static psymodel_data\n     *       1. calling_program_data = psymodel_data\n     *       2. compute psymodel_data\n     *\n     *       For data which needs to know the blocktype, the copying must be\n     *       done at the end of this loop, and the old values must be saved:\n     *\n     *       0. static psymodel_data_old\n     *       1. compute psymodel_data\n     *       2. compute possible block type of this granule\n     *       3. compute final block type of previous granule based on #2.\n     *       4. calling_program_data = psymodel_data_old\n     *       5. psymodel_data_old = psymodel_data\n     *     psycho_loudness_approx\n     *       jd - 2001 mar 12\n     *    in:  energy   - BLKSIZE/2 elements of frequency magnitudes ^ 2\n     *         gfp      - uses out_samplerate, ATHtype (also needed for ATHformula)\n     *    returns: loudness^2 approximation, a positive value roughly tuned for a value\n     *             of 1.0 for signals near clipping.\n     *    notes:   When calibrated, feeding this function binary white noise at sample\n     *             values +32767 or -32768 should return values that approach 3.\n     *             ATHformula is used to approximate an equal loudness curve.\n     *    future:  Data indicates that the shape of the equal loudness curve varies\n     *             with intensity.  This function might be improved by using an equal\n     *             loudness curve shaped for typical playback levels (instead of the\n     *             ATH, that is shaped for the threshold).  A flexible realization might\n     *             simply bend the existing ATH curve to achieve the desired shape.\n     *             However, the potential gain may not be enough to justify an effort.\n     * 
\n */\n function psycho_loudness_approx(energy, gfc) {\n var loudness_power = 0.0;\n /* apply weights to power in freq. bands */\n for (var i = 0; i < Encoder_1.BLKSIZE / 2; ++i)\n loudness_power += energy[i] * gfc.ATH.eql_w[i];\n loudness_power *= VO_SCALE;\n\n return loudness_power;\n }\n\n function compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, wsamp_lPos, wsamp_s, wsamp_sPos, gr_out, chn, buffer, bufPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n }\n /* FFT data for mid and side channel is derived from L & R */\n else if (chn == 2) {\n for (var j = Encoder_1.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$3.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$3.SQRT2 * 0.5;\n }\n for (var b = 2; b >= 0; --b) {\n for (var j = Encoder_1.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][b][j];\n var r = wsamp_s[wsamp_sPos + 1][b][j];\n wsamp_s[wsamp_sPos + 0][b][j] = (l + r) * Util$3.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][b][j] = (l - r) * Util$3.SQRT2 * 0.5;\n }\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n\n for (var j = Encoder_1.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = (wsamp_l[wsamp_lPos + 0])[Encoder_1.BLKSIZE / 2 - j];\n var im = (wsamp_l[wsamp_lPos + 0])[Encoder_1.BLKSIZE / 2 + j];\n fftenergy[Encoder_1.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n for (var b = 2; b >= 0; --b) {\n fftenergy_s[b][0] = (wsamp_s[wsamp_sPos + 0])[b][0];\n fftenergy_s[b][0] *= fftenergy_s[b][0];\n for (var j = Encoder_1.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = (wsamp_s[wsamp_sPos + 0])[b][Encoder_1.BLKSIZE_s\n / 2 - j];\n var im = (wsamp_s[wsamp_sPos + 0])[b][Encoder_1.BLKSIZE_s\n / 2 + j];\n fftenergy_s[b][Encoder_1.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n }\n /* total energy */\n {\n var totalenergy = 0.0;\n for (var j = 11; j < Encoder_1.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n\n gfc.tot_ener[chn] = totalenergy;\n }\n\n if (gfp.analysis) {\n for (var j = 0; j < Encoder_1.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n\n /*********************************************************************\n * compute loudness approximation (used for ATH auto-level adjustment)\n *********************************************************************/\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n // no loudness for mid/side ch\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n\n /* mask_add optimization */\n /* init the limit values used to avoid computing log in mask_add when it is not necessary */\n\n /**\n *
\n     *  For example, with i = 10*log10(m2/m1)/10*16         (= log10(m2/m1)*16)\n     *\n     * abs(i)>8 is equivalent (as i is an integer) to\n     * abs(i)>=9\n     * i>=9 || i<=-9\n     * equivalent to (as i is the biggest integer smaller than log10(m2/m1)*16\n     * or the smallest integer bigger than log10(m2/m1)*16 depending on the sign of log10(m2/m1)*16)\n     * log10(m2/m1)>=9/16 || log10(m2/m1)<=-9/16\n     * exp10 is strictly increasing thus this is equivalent to\n     * m2/m1 >= 10^(9/16) || m2/m1<=10^(-9/16) which are comparisons to constants\n     * 
\n */\n\n /**\n * as in if(i>8)\n */\n var I1LIMIT = 8;\n /**\n * as in if(i>24) . changed 23\n */\n var I2LIMIT = 23;\n /**\n * as in if(m<15)\n */\n var MLIMIT = 15;\n\n var ma_max_i1;\n var ma_max_i2;\n var ma_max_m;\n\n /**\n * This is the masking table:
\n * According to tonality, values are going from 0dB (TMN) to 9.3dB (NMT).
\n * After additive masking computation, 8dB are added, so final values are\n * going from 8dB to 17.3dB\n *\n * pow(10, -0.0..-0.6)\n */\n var tab = [1.0, 0.79433, 0.63096, 0.63096,\n 0.63096, 0.63096, 0.63096, 0.25119, 0.11749];\n\n function init_mask_add_max_values() {\n ma_max_i1 = Math.pow(10, (I1LIMIT + 1) / 16.0);\n ma_max_i2 = Math.pow(10, (I2LIMIT + 1) / 16.0);\n ma_max_m = Math.pow(10, (MLIMIT) / 10.0);\n }\n\n var table1 = [3.3246 * 3.3246,\n 3.23837 * 3.23837, 3.15437 * 3.15437, 3.00412 * 3.00412,\n 2.86103 * 2.86103, 2.65407 * 2.65407, 2.46209 * 2.46209,\n 2.284 * 2.284, 2.11879 * 2.11879, 1.96552 * 1.96552,\n 1.82335 * 1.82335, 1.69146 * 1.69146, 1.56911 * 1.56911,\n 1.46658 * 1.46658, 1.37074 * 1.37074, 1.31036 * 1.31036,\n 1.25264 * 1.25264, 1.20648 * 1.20648, 1.16203 * 1.16203,\n 1.12765 * 1.12765, 1.09428 * 1.09428, 1.0659 * 1.0659,\n 1.03826 * 1.03826, 1.01895 * 1.01895, 1];\n\n var table2 = [1.33352 * 1.33352,\n 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497,\n 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382,\n 1.22321 * 1.22321, 1.14758 * 1.14758, 1];\n\n var table3 = [2.35364 * 2.35364,\n 2.29259 * 2.29259, 2.23313 * 2.23313, 2.12675 * 2.12675,\n 2.02545 * 2.02545, 1.87894 * 1.87894, 1.74303 * 1.74303,\n 1.61695 * 1.61695, 1.49999 * 1.49999, 1.39148 * 1.39148,\n 1.29083 * 1.29083, 1.19746 * 1.19746, 1.11084 * 1.11084,\n 1.03826 * 1.03826];\n\n /**\n * addition of simultaneous masking Naoki Shibata 2000/7\n */\n function mask_add(m1, m2, kk, b, gfc, shortblock) {\n var ratio;\n\n if (m2 > m1) {\n if (m2 < (m1 * ma_max_i2))\n ratio = m2 / m1;\n else\n return (m1 + m2);\n } else {\n if (m1 >= (m2 * ma_max_i2))\n return (m1 + m2);\n ratio = m1 / m2;\n }\n\n /* Should always be true, just checking */\n assert$3(m1 >= 0);\n assert$3(m2 >= 0);\n\n m1 += m2;\n //if (((long)(b + 3) & 0xffffffff) <= 3 + 3) {\n if ((b + 3) <= 3 + 3) {\n /* approximately, 1 bark = 3 partitions */\n /* 65% of the cases */\n /* originally 'if(i > 8)' */\n if (ratio >= ma_max_i1) {\n /* 43% of the total */\n return m1;\n }\n\n /* 22% of the total */\n var i = 0 | (Util$3.FAST_LOG10_X(ratio, 16.0));\n return m1 * table2[i];\n }\n\n /**\n *
\n         * m<15 equ log10((m1+m2)/gfc.ATH.cb[k])<1.5\n         * equ (m1+m2)/gfc.ATH.cb[k]<10^1.5\n         * equ (m1+m2)<10^1.5 * gfc.ATH.cb[k]\n         * 
\n */\n var i = 0 | Util$3.FAST_LOG10_X(ratio, 16.0);\n if (shortblock != 0) {\n m2 = gfc.ATH.cb_s[kk] * gfc.ATH.adjust;\n } else {\n m2 = gfc.ATH.cb_l[kk] * gfc.ATH.adjust;\n }\n assert$3(m2 >= 0);\n if (m1 < ma_max_m * m2) {\n /* 3% of the total */\n /* Originally if (m > 0) { */\n if (m1 > m2) {\n var f, r;\n\n f = 1.0;\n if (i <= 13)\n f = table3[i];\n\n r = Util$3.FAST_LOG10_X(m1 / m2, 10.0 / 15.0);\n return m1 * ((table1[i] - f) * r + f);\n }\n\n if (i > 13)\n return m1;\n\n return m1 * table3[i];\n }\n\n /* 10% of total */\n return m1 * table1[i];\n }\n\n var table2_ = [1.33352 * 1.33352,\n 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497,\n 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382,\n 1.22321 * 1.22321, 1.14758 * 1.14758, 1];\n\n /**\n * addition of simultaneous masking Naoki Shibata 2000/7\n */\n function vbrpsy_mask_add(m1, m2, b) {\n var ratio;\n\n if (m1 < 0) {\n m1 = 0;\n }\n if (m2 < 0) {\n m2 = 0;\n }\n if (m1 <= 0) {\n return m2;\n }\n if (m2 <= 0) {\n return m1;\n }\n if (m2 > m1) {\n ratio = m2 / m1;\n } else {\n ratio = m1 / m2;\n }\n if (-2 <= b && b <= 2) {\n /* approximately, 1 bark = 3 partitions */\n /* originally 'if(i > 8)' */\n if (ratio >= ma_max_i1) {\n return m1 + m2;\n } else {\n var i = 0 | (Util$3.FAST_LOG10_X(ratio, 16.0));\n return (m1 + m2) * table2_[i];\n }\n }\n if (ratio < ma_max_i2) {\n return m1 + m2;\n }\n if (m1 < m2) {\n m1 = m2;\n }\n return m1;\n }\n\n /**\n * compute interchannel masking effects\n */\n function calc_interchannel_masking(gfp, ratio) {\n var gfc = gfp.internal_flags;\n if (gfc.channels_out > 1) {\n for (var sb = 0; sb < Encoder_1.SBMAX_l; sb++) {\n var l = gfc.thm[0].l[sb];\n var r = gfc.thm[1].l[sb];\n gfc.thm[0].l[sb] += r * ratio;\n gfc.thm[1].l[sb] += l * ratio;\n }\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var l = gfc.thm[0].s[sb][sblock];\n var r = gfc.thm[1].s[sb][sblock];\n gfc.thm[0].s[sb][sblock] += r * ratio;\n gfc.thm[1].s[sb][sblock] += l * ratio;\n }\n }\n }\n }\n\n /**\n * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper\n */\n function msfix1(gfc) {\n for (var sb = 0; sb < Encoder_1.SBMAX_l; sb++) {\n /* use this fix if L & R masking differs by 2db or less */\n /* if db = 10*log10(x2/x1) < 2 */\n /* if (x2 < 1.58*x1) { */\n if (gfc.thm[0].l[sb] > 1.58 * gfc.thm[1].l[sb]\n || gfc.thm[1].l[sb] > 1.58 * gfc.thm[0].l[sb])\n continue;\n var mld = gfc.mld_l[sb] * gfc.en[3].l[sb];\n var rmid = Math.max(gfc.thm[2].l[sb],\n Math.min(gfc.thm[3].l[sb], mld));\n\n mld = gfc.mld_l[sb] * gfc.en[2].l[sb];\n var rside = Math.max(gfc.thm[3].l[sb],\n Math.min(gfc.thm[2].l[sb], mld));\n gfc.thm[2].l[sb] = rmid;\n gfc.thm[3].l[sb] = rside;\n }\n\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n if (gfc.thm[0].s[sb][sblock] > 1.58 * gfc.thm[1].s[sb][sblock]\n || gfc.thm[1].s[sb][sblock] > 1.58 * gfc.thm[0].s[sb][sblock])\n continue;\n var mld = gfc.mld_s[sb] * gfc.en[3].s[sb][sblock];\n var rmid = Math.max(gfc.thm[2].s[sb][sblock],\n Math.min(gfc.thm[3].s[sb][sblock], mld));\n\n mld = gfc.mld_s[sb] * gfc.en[2].s[sb][sblock];\n var rside = Math.max(gfc.thm[3].s[sb][sblock],\n Math.min(gfc.thm[2].s[sb][sblock], mld));\n\n gfc.thm[2].s[sb][sblock] = rmid;\n gfc.thm[3].s[sb][sblock] = rside;\n }\n }\n }\n\n /**\n * Adjust M/S maskings if user set \"msfix\"\n *\n * Naoki Shibata 2000\n */\n function ns_msfix(gfc, msfix, athadjust) {\n var msfix2 = msfix;\n var athlower = Math.pow(10, athadjust);\n\n msfix *= 2.0;\n msfix2 *= 2.0;\n for (var sb = 0; sb < Encoder_1.SBMAX_l; sb++) {\n var thmLR, thmM, thmS, ath;\n ath = (gfc.ATH.cb_l[gfc.bm_l[sb]]) * athlower;\n thmLR = Math.min(Math.max(gfc.thm[0].l[sb], ath),\n Math.max(gfc.thm[1].l[sb], ath));\n thmM = Math.max(gfc.thm[2].l[sb], ath);\n thmS = Math.max(gfc.thm[3].l[sb], ath);\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix2 / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n assert$3(thmM + thmS > 0);\n }\n gfc.thm[2].l[sb] = Math.min(thmM, gfc.thm[2].l[sb]);\n gfc.thm[3].l[sb] = Math.min(thmS, gfc.thm[3].l[sb]);\n }\n\n athlower *= ( Encoder_1.BLKSIZE_s / Encoder_1.BLKSIZE);\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmLR, thmM, thmS, ath;\n ath = (gfc.ATH.cb_s[gfc.bm_s[sb]]) * athlower;\n thmLR = Math.min(Math.max(gfc.thm[0].s[sb][sblock], ath),\n Math.max(gfc.thm[1].s[sb][sblock], ath));\n thmM = Math.max(gfc.thm[2].s[sb][sblock], ath);\n thmS = Math.max(gfc.thm[3].s[sb][sblock], ath);\n\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n assert$3(thmM + thmS > 0);\n }\n gfc.thm[2].s[sb][sblock] = Math.min(gfc.thm[2].s[sb][sblock],\n thmM);\n gfc.thm[3].s[sb][sblock] = Math.min(gfc.thm[3].s[sb][sblock],\n thmS);\n }\n }\n }\n\n /**\n * short block threshold calculation (part 2)\n *\n * partition band bo_s[sfb] is at the transition from scalefactor band sfb\n * to the next one sfb+1; enn and thmm have to be split between them\n */\n function convert_partition2scalefac_s(gfc, eb, thr, chn, sblock) {\n var sb, b;\n var enn = 0.0;\n var thmm = 0.0;\n for (sb = b = 0; sb < Encoder_1.SBMAX_s; ++b, ++sb) {\n var bo_s_sb = gfc.bo_s[sb];\n var npart_s = gfc.npart_s;\n var b_lim = bo_s_sb < npart_s ? bo_s_sb : npart_s;\n while (b < b_lim) {\n assert$3(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert$3(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].s[sb][sblock] = enn;\n gfc.thm[chn].s[sb][sblock] = thmm;\n\n if (b >= npart_s) {\n ++sb;\n break;\n }\n assert$3(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert$3(thr[b] >= 0);\n {\n /* at transition sfb . sfb+1 */\n var w_curr = gfc.PSY.bo_s_weight[sb];\n var w_next = 1.0 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].s[sb][sblock] += enn;\n gfc.thm[chn].s[sb][sblock] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n /* zero initialize the rest */\n for (; sb < Encoder_1.SBMAX_s; ++sb) {\n gfc.en[chn].s[sb][sblock] = 0;\n gfc.thm[chn].s[sb][sblock] = 0;\n }\n }\n\n /**\n * longblock threshold calculation (part 2)\n */\n function convert_partition2scalefac_l(gfc, eb, thr, chn) {\n var sb, b;\n var enn = 0.0;\n var thmm = 0.0;\n for (sb = b = 0; sb < Encoder_1.SBMAX_l; ++b, ++sb) {\n var bo_l_sb = gfc.bo_l[sb];\n var npart_l = gfc.npart_l;\n var b_lim = bo_l_sb < npart_l ? bo_l_sb : npart_l;\n while (b < b_lim) {\n assert$3(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert$3(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].l[sb] = enn;\n gfc.thm[chn].l[sb] = thmm;\n\n if (b >= npart_l) {\n ++sb;\n break;\n }\n assert$3(eb[b] >= 0);\n assert$3(thr[b] >= 0);\n {\n /* at transition sfb . sfb+1 */\n var w_curr = gfc.PSY.bo_l_weight[sb];\n var w_next = 1.0 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].l[sb] += enn;\n gfc.thm[chn].l[sb] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n /* zero initialize the rest */\n for (; sb < Encoder_1.SBMAX_l; ++sb) {\n gfc.en[chn].l[sb] = 0;\n gfc.thm[chn].l[sb] = 0;\n }\n }\n\n function compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var j, b;\n\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0, m = 0;\n var n = gfc.numlines_s[b];\n for (var i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n }\n assert$3(b == gfc.npart_s);\n assert$3(j == 129);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var ecb = gfc.s3_ss[j++] * eb[kk];\n ++kk;\n while (kk <= gfc.s3ind_s[b][1]) {\n ecb += gfc.s3_ss[j] * eb[kk];\n ++j;\n ++kk;\n }\n\n { /* limit calculated threshold by previous granule */\n var x = rpelev_s * gfc.nb_s1[chn][b];\n thr[b] = Math.min(ecb, x);\n }\n if (gfc.blocktype_old[chn & 1] == Encoder_1.SHORT_TYPE) {\n /* limit calculated threshold by even older granule */\n var x = rpelev2_s * gfc.nb_s2[chn][b];\n var y = thr[b];\n thr[b] = Math.min(x, y);\n }\n\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n assert$3(thr[b] >= 0);\n }\n for (; b <= Encoder_1.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n\n function block_type_set(gfp, uselongblock, blocktype_d, blocktype) {\n var gfc = gfp.internal_flags;\n\n if (gfp.short_blocks == ShortBlock$3.short_block_coupled\n /* force both channels to use the same block type */\n /* this is necessary if the frame is to be encoded in ms_stereo. */\n /* But even without ms_stereo, FhG does this */\n && !(uselongblock[0] != 0 && uselongblock[1] != 0))\n uselongblock[0] = uselongblock[1] = 0;\n\n /*\n * update the blocktype of the previous granule, since it depends on\n * what happend in this granule\n */\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n blocktype[chn] = Encoder_1.NORM_TYPE;\n /* disable short blocks */\n if (gfp.short_blocks == ShortBlock$3.short_block_dispensed)\n uselongblock[chn] = 1;\n if (gfp.short_blocks == ShortBlock$3.short_block_forced)\n uselongblock[chn] = 0;\n\n if (uselongblock[chn] != 0) {\n /* no attack : use long blocks */\n assert$3(gfc.blocktype_old[chn] != Encoder_1.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder_1.SHORT_TYPE)\n blocktype[chn] = Encoder_1.STOP_TYPE;\n } else {\n /* attack : use short blocks */\n blocktype[chn] = Encoder_1.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder_1.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder_1.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder_1.STOP_TYPE)\n gfc.blocktype_old[chn] = Encoder_1.SHORT_TYPE;\n }\n\n blocktype_d[chn] = gfc.blocktype_old[chn];\n // value returned to calling program\n gfc.blocktype_old[chn] = blocktype[chn];\n // save for next call to l3psy_anal\n }\n }\n\n function NS_INTERP(x, y, r) {\n /* was pow((x),(r))*pow((y),1-(r)) */\n if (r >= 1.0) {\n /* 99.7% of the time */\n return x;\n }\n if (r <= 0.0)\n return y;\n if (y > 0.0) {\n /* rest of the time */\n return (Math.pow(x / y, r) * y);\n }\n /* never happens */\n return 0.0;\n }\n\n /**\n * these values are tuned only for 44.1kHz...\n */\n var regcoef_s = [11.8, 13.6, 17.2, 32, 46.5,\n 51.3, 57.5, 67.1, 71.5, 84.6, 97.6, 130,\n /* 255.8 */\n ];\n\n function pecalc_s(mr, masking_lower) {\n var pe_s = 1236.28 / 4;\n for (var sb = 0; sb < Encoder_1.SBMAX_s - 1; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thm = mr.thm.s[sb][sblock];\n assert$3(sb < regcoef_s.length);\n if (thm > 0.0) {\n var x = thm * masking_lower;\n var en = mr.en.s[sb][sblock];\n if (en > x) {\n if (en > x * 1e10) {\n pe_s += regcoef_s[sb] * (10.0 * LOG10);\n } else {\n assert$3(x > 0);\n pe_s += regcoef_s[sb] * Util$3.FAST_LOG10(en / x);\n }\n }\n }\n }\n }\n\n return pe_s;\n }\n\n /**\n * these values are tuned only for 44.1kHz...\n */\n var regcoef_l = [6.8, 5.8, 5.8, 6.4, 6.5, 9.9,\n 12.1, 14.4, 15, 18.9, 21.6, 26.9, 34.2, 40.2, 46.8, 56.5,\n 60.7, 73.9, 85.7, 93.4, 126.1,\n /* 241.3 */\n ];\n\n function pecalc_l(mr, masking_lower) {\n var pe_l = 1124.23 / 4;\n for (var sb = 0; sb < Encoder_1.SBMAX_l - 1; sb++) {\n var thm = mr.thm.l[sb];\n assert$3(sb < regcoef_l.length);\n if (thm > 0.0) {\n var x = thm * masking_lower;\n var en = mr.en.l[sb];\n if (en > x) {\n if (en > x * 1e10) {\n pe_l += regcoef_l[sb] * (10.0 * LOG10);\n } else {\n assert$3(x > 0);\n pe_l += regcoef_l[sb] * Util$3.FAST_LOG10(en / x);\n }\n }\n }\n }\n return pe_l;\n }\n\n function calc_energy(gfc, fftenergy, eb, max, avg) {\n var b, j;\n\n for (b = j = 0; b < gfc.npart_l; ++b) {\n var ebb = 0, m = 0;\n var i;\n for (i = 0; i < gfc.numlines_l[b]; ++i, ++j) {\n var el = fftenergy[j];\n assert$3(el >= 0);\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n max[b] = m;\n avg[b] = ebb * gfc.rnumlines_l[b];\n assert$3(gfc.rnumlines_l[b] >= 0);\n assert$3(ebb >= 0);\n assert$3(eb[b] >= 0);\n assert$3(max[b] >= 0);\n assert$3(avg[b] >= 0);\n }\n }\n\n function calc_mask_index_l(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$3((gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n\n for (b = 1; b < gfc.npart_l - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$3((gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1) > 0);\n a = 20.0\n * (m * 3.0 - a)\n / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b]\n + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert$3(b > 0);\n assert$3(b == gfc.npart_l - 1);\n\n a = avg[b - 1] + avg[b];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert$3((gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert$3(b == (gfc.npart_l - 1));\n }\n\n var fircoef = [\n -8.65163e-18 * 2, -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2,\n -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2, 0.0931738 * 2,\n -5.52212e-17 * 2, -0.313819 * 2\n ];\n\n this.L3psycho_anal_ns = function (gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n /*\n * to get a good cache performance, one has to think about the sequence,\n * in which the variables are used.\n */\n var gfc = gfp.internal_flags;\n\n /* fft and energy calculation */\n var wsamp_L = new_float_n$3([2, Encoder_1.BLKSIZE]);\n var wsamp_S = new_float_n$3([2, 3, Encoder_1.BLKSIZE_s]);\n\n /* convolution */\n var eb_l = new_float$3(Encoder_1.CBANDS + 1);\n var eb_s = new_float$3(Encoder_1.CBANDS + 1);\n var thr = new_float$3(Encoder_1.CBANDS + 2);\n\n /* block type */\n var blocktype = new_int$3(2), uselongblock = new_int$3(2);\n\n /* usual variables like loop indices, etc.. */\n var numchn, chn;\n var b, i, j, k;\n var sb, sblock;\n\n /* variables used for --nspsytune */\n var ns_hpfsmpl = new_float_n$3([2, 576]);\n var pcfact;\n var mask_idx_l = new_int$3(Encoder_1.CBANDS + 2), mask_idx_s = new_int$3(Encoder_1.CBANDS + 2);\n\n Arrays$3.fill(mask_idx_s, 0);\n\n numchn = gfc.channels_out;\n /* chn=2 and 3 = Mid and Side channels */\n if (gfp.mode == MPEGMode.JOINT_STEREO)\n numchn = 4;\n\n if (gfp.VBR == VbrMode$3.vbr_off)\n pcfact = gfc.ResvMax == 0 ? 0 : ( gfc.ResvSize)\n / gfc.ResvMax * 0.5;\n else if (gfp.VBR == VbrMode$3.vbr_rh || gfp.VBR == VbrMode$3.vbr_mtrh\n || gfp.VBR == VbrMode$3.vbr_mt) {\n pcfact = 0.6;\n } else\n pcfact = 1.0;\n\n /**********************************************************************\n * Apply HPF of fs/4 to the input signal. This is used for attack\n * detection / handling.\n **********************************************************************/\n /* Don't copy the input buffer into a temporary buffer */\n /* unroll the loop 2 times */\n for (chn = 0; chn < gfc.channels_out; chn++) {\n /* apply high pass filter of fs/4 */\n var firbuf = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n assert$3(fircoef.length == ((NSFIRLEN - 1) / 2));\n for (i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf[firbufPos + i + 10];\n sum2 = 0.0;\n for (j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) {\n sum1 += fircoef[j]\n * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i\n + NSFIRLEN - j]);\n sum2 += fircoef[j + 1]\n * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos\n + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (numchn > 2) {\n /* MS maskings */\n /* percep_MS_entropy [chn-2] = gfc . pe [chn]; */\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n\n for (chn = 0; chn < numchn; chn++) {\n var wsamp_l;\n var wsamp_s;\n var en_subshort = new_float$3(12);\n var en_short = [0, 0, 0, 0];\n var attack_intensity = new_float$3(12);\n var ns_uselongblock = 1;\n var attackThreshold;\n var max = new_float$3(Encoder_1.CBANDS), avg = new_float$3(Encoder_1.CBANDS);\n var ns_attacks = [0, 0, 0, 0];\n var fftenergy = new_float$3(Encoder_1.HBLKSIZE);\n var fftenergy_s = new_float_n$3([3, Encoder_1.HBLKSIZE_s]);\n\n /*\n * rh 20040301: the following loops do access one off the limits so\n * I increase the array dimensions by one and initialize the\n * accessed values to zero\n */\n assert$3(gfc.npart_s <= Encoder_1.CBANDS);\n assert$3(gfc.npart_l <= Encoder_1.CBANDS);\n\n /***************************************************************\n * determine the block type (window type)\n ***************************************************************/\n /* calculate energies of each sub-shortblocks */\n for (i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert$3(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i]\n / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n\n if (chn == 2) {\n for (i = 0; i < 576; i++) {\n var l, r;\n l = ns_hpfsmpl[0][i];\n r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n {\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n for (i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p = 1.;\n for (; pfPos < pfe; pfPos++)\n if (p < Math.abs(pf[pfPos]))\n p = Math.abs(pf[pfPos]);\n\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p;\n en_short[1 + i / 3] += p;\n if (p > en_subshort[i + 3 - 2]) {\n assert$3(en_subshort[i + 3 - 2] > 0);\n p = p / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p * 10.0) {\n assert$3(p > 0);\n p = en_subshort[i + 3 - 2] / (p * 10.0);\n } else\n p = 0.0;\n attack_intensity[i + 3] = p;\n }\n }\n\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (i = 1; i < 12; i++)\n if (x < attack_intensity[i])\n x = attack_intensity[i];\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n\n /* compare energies between sub-shortblocks */\n attackThreshold = (chn == 3) ? gfc.nsPsy.attackthre_s\n : gfc.nsPsy.attackthre;\n for (i = 0; i < 12; i++)\n if (0 == ns_attacks[i / 3]\n && attack_intensity[i] > attackThreshold)\n ns_attacks[i / 3] = (i % 3) + 1;\n\n /*\n * should have energy change between short blocks, in order to avoid\n * periodic signals\n */\n for (i = 1; i < 4; i++) {\n var ratio;\n if (en_short[i - 1] > en_short[i]) {\n assert$3(en_short[i] > 0);\n ratio = en_short[i - 1] / en_short[i];\n } else {\n assert$3(en_short[i - 1] > 0);\n ratio = en_short[i] / en_short[i - 1];\n }\n if (ratio < 1.7) {\n ns_attacks[i] = 0;\n if (i == 1)\n ns_attacks[0] = 0;\n }\n }\n\n if (ns_attacks[0] != 0 && gfc.nsPsy.lastAttacks[chn] != 0)\n ns_attacks[0] = 0;\n\n if (gfc.nsPsy.lastAttacks[chn] == 3\n || (ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3]) != 0) {\n ns_uselongblock = 0;\n\n if (ns_attacks[1] != 0 && ns_attacks[0] != 0)\n ns_attacks[1] = 0;\n if (ns_attacks[2] != 0 && ns_attacks[1] != 0)\n ns_attacks[2] = 0;\n if (ns_attacks[3] != 0 && ns_attacks[2] != 0)\n ns_attacks[3] = 0;\n }\n\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n\n /*\n * there is a one granule delay. Copy maskings computed last call\n * into masking_ratio to return to calling program.\n */\n energy[chn] = gfc.tot_ener[chn];\n\n /*********************************************************************\n * compute FFTs\n *********************************************************************/\n wsamp_s = wsamp_S;\n wsamp_l = wsamp_L;\n compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, (chn & 1),\n wsamp_s, (chn & 1), gr_out, chn, buffer, bufPos);\n\n /*********************************************************************\n * Calculate the energy and the tonality of each partition.\n *********************************************************************/\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n /* compute masking thresholds for short blocks */\n for (sblock = 0; sblock < 3; sblock++) {\n var enn, thmm;\n compute_masking_s(gfp, fftenergy_s, eb_s, thr, chn, sblock);\n convert_partition2scalefac_s(gfc, eb_s, thr, chn, sblock);\n /**** short block pre-echo control ****/\n for (sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n thmm = gfc.thm[chn].s[sb][sblock];\n\n thmm *= NS_PREECHO_ATT0;\n if (ns_attacks[sblock] >= 2 || ns_attacks[sblock + 1] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT1 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n if (ns_attacks[sblock] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n } else if ((sblock != 0 && ns_attacks[sblock - 1] == 3)\n || (sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3)) {\n var idx = (sblock != 2) ? sblock + 1 : 0;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n /* pulse like signal detection for fatboy.wav and so on */\n enn = en_subshort[sblock * 3 + 3]\n + en_subshort[sblock * 3 + 4]\n + en_subshort[sblock * 3 + 5];\n if (en_subshort[sblock * 3 + 5] * 6 < enn) {\n thmm *= 0.5;\n if (en_subshort[sblock * 3 + 4] * 6 < enn)\n thmm *= 0.5;\n }\n\n gfc.thm[chn].s[sb][sblock] = thmm;\n }\n }\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[2];\n\n /*********************************************************************\n * convolve the partitioned energy and unpredictability with the\n * spreading function, s3_l[b][k]\n ********************************************************************/\n k = 0;\n {\n for (b = 0; b < gfc.npart_l; b++) {\n /*\n * convolve the partitioned energy with the spreading\n * function\n */\n var kk = gfc.s3ind[b][0];\n var eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n var ecb = gfc.s3_ll[k++] * eb2;\n while (++kk <= gfc.s3ind[b][1]) {\n eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n ecb = mask_add(ecb, gfc.s3_ll[k++] * eb2, kk, kk - b,\n gfc, 0);\n }\n ecb *= 0.158489319246111;\n /* pow(10,-0.8) */\n\n /**** long block pre-echo control ****/\n /**\n *
\n                     * dont use long block pre-echo control if previous granule was\n                     * a short block.  This is to avoid the situation:\n                     * frame0:  quiet (very low masking)\n                     * frame1:  surge  (triggers short blocks)\n                     * frame2:  regular frame.  looks like pre-echo when compared to\n                     *          frame0, but all pre-echo was in frame1.\n                     * 
\n */\n /*\n * chn=0,1 L and R channels\n *\n * chn=2,3 S and M channels.\n */\n\n if (gfc.blocktype_old[chn & 1] == Encoder_1.SHORT_TYPE)\n thr[b] = ecb;\n else\n thr[b] = NS_INTERP(\n Math.min(ecb, Math.min(rpelev\n * gfc.nb_1[chn][b], rpelev2\n * gfc.nb_2[chn][b])), ecb, pcfact);\n\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n }\n }\n for (; b <= Encoder_1.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n /* compute masking thresholds for long blocks */\n convert_partition2scalefac_l(gfc, eb_l, thr, chn);\n }\n /* end loop over chn */\n\n if (gfp.mode == MPEGMode.STEREO || gfp.mode == MPEGMode.JOINT_STEREO) {\n if (gfp.interChRatio > 0.0) {\n calc_interchannel_masking(gfp, gfp.interChRatio);\n }\n }\n\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n var msfix;\n msfix1(gfc);\n msfix = gfp.msfix;\n if (Math.abs(msfix) > 0.0)\n ns_msfix(gfc, msfix, gfp.ATHlower * gfc.ATH.adjust);\n }\n\n /***************************************************************\n * determine final block type\n ***************************************************************/\n block_type_set(gfp, uselongblock, blocktype_d, blocktype);\n\n /*********************************************************************\n * compute the value of PE to return ... no delay and advance\n *********************************************************************/\n for (chn = 0; chn < numchn; chn++) {\n var ppe;\n var ppePos = 0;\n var type;\n var mr;\n\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder_1.NORM_TYPE;\n if (blocktype_d[0] == Encoder_1.SHORT_TYPE\n || blocktype_d[1] == Encoder_1.SHORT_TYPE)\n type = Encoder_1.SHORT_TYPE;\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n\n if (type == Encoder_1.SHORT_TYPE)\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n else\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n\n if (gfp.analysis)\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n\n }\n return 0;\n };\n\n function vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out, fftenergy, wsamp_l, wsamp_lPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n } else if (chn == 2) {\n /* FFT data for mid and side channel is derived from L & R */\n for (var j = Encoder_1.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$3.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$3.SQRT2 * 0.5;\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n\n for (var j = Encoder_1.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = wsamp_l[wsamp_lPos + 0][Encoder_1.BLKSIZE / 2 - j];\n var im = wsamp_l[wsamp_lPos + 0][Encoder_1.BLKSIZE / 2 + j];\n fftenergy[Encoder_1.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n /* total energy */\n {\n var totalenergy = 0.0;\n for (var j = 11; j < Encoder_1.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n\n gfc.tot_ener[chn] = totalenergy;\n }\n\n if (gfp.analysis) {\n for (var j = 0; j < Encoder_1.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n }\n\n function vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock, fftenergy_s, wsamp_s, wsamp_sPos) {\n var gfc = gfp.internal_flags;\n\n if (sblock == 0 && chn < 2) {\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n }\n if (chn == 2) {\n /* FFT data for mid and side channel is derived from L & R */\n for (var j = Encoder_1.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][sblock][j];\n var r = wsamp_s[wsamp_sPos + 1][sblock][j];\n wsamp_s[wsamp_sPos + 0][sblock][j] = (l + r) * Util$3.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][sblock][j] = (l - r) * Util$3.SQRT2 * 0.5;\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy_s[sblock][0] = wsamp_s[wsamp_sPos + 0][sblock][0];\n fftenergy_s[sblock][0] *= fftenergy_s[sblock][0];\n for (var j = Encoder_1.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = wsamp_s[wsamp_sPos + 0][sblock][Encoder_1.BLKSIZE_s / 2 - j];\n var im = wsamp_s[wsamp_sPos + 0][sblock][Encoder_1.BLKSIZE_s / 2 + j];\n fftenergy_s[sblock][Encoder_1.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n }\n\n /**\n * compute loudness approximation (used for ATH auto-level adjustment)\n */\n function vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy) {\n var gfc = gfp.internal_flags;\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n // no loudness for mid/side ch\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n\n var fircoef_ = [-8.65163e-18 * 2,\n -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2,\n -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2,\n 0.0931738 * 2, -5.52212e-17 * 2, -0.313819 * 2];\n\n /**\n * Apply HPF of fs/4 to the input signal. This is used for attack detection\n * / handling.\n */\n function vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, energy, sub_short_factor, ns_attacks, uselongblock) {\n var ns_hpfsmpl = new_float_n$3([2, 576]);\n var gfc = gfp.internal_flags;\n var n_chn_out = gfc.channels_out;\n /* chn=2 and 3 = Mid and Side channels */\n var n_chn_psy = (gfp.mode == MPEGMode.JOINT_STEREO) ? 4 : n_chn_out;\n /* Don't copy the input buffer into a temporary buffer */\n /* unroll the loop 2 times */\n for (var chn = 0; chn < n_chn_out; chn++) {\n /* apply high pass filter of fs/4 */\n firbuf = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n assert$3(fircoef_.length == ((NSFIRLEN - 1) / 2));\n for (var i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf[firbufPos + i + 10];\n sum2 = 0.0;\n for (var j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) {\n sum1 += fircoef_[j]\n * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i\n + NSFIRLEN - j]);\n sum2 += fircoef_[j + 1]\n * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos\n + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (n_chn_psy > 2) {\n /* MS maskings */\n /* percep_MS_entropy [chn-2] = gfc . pe [chn]; */\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var attack_intensity = new_float$3(12);\n var en_subshort = new_float$3(12);\n var en_short = [0, 0, 0, 0];\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n var attackThreshold = (chn == 3) ? gfc.nsPsy.attackthre_s\n : gfc.nsPsy.attackthre;\n var ns_uselongblock = 1;\n\n if (chn == 2) {\n for (var i = 0, j = 576; j > 0; ++i, --j) {\n var l = ns_hpfsmpl[0][i];\n var r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n /***************************************************************\n * determine the block type (window type)\n ***************************************************************/\n /* calculate energies of each sub-shortblocks */\n for (var i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert$3(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i]\n / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n\n for (var i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p = 1.;\n for (; pfPos < pfe; pfPos++)\n if (p < Math.abs(pf[pfPos]))\n p = Math.abs(pf[pfPos]);\n\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p;\n en_short[1 + i / 3] += p;\n if (p > en_subshort[i + 3 - 2]) {\n assert$3(en_subshort[i + 3 - 2] > 0);\n p = p / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p * 10.0) {\n assert$3(p > 0);\n p = en_subshort[i + 3 - 2] / (p * 10.0);\n } else {\n p = 0.0;\n }\n attack_intensity[i + 3] = p;\n }\n /* pulse like signal detection for fatboy.wav and so on */\n for (var i = 0; i < 3; ++i) {\n var enn = en_subshort[i * 3 + 3]\n + en_subshort[i * 3 + 4] + en_subshort[i * 3 + 5];\n var factor = 1.;\n if (en_subshort[i * 3 + 5] * 6 < enn) {\n factor *= 0.5;\n if (en_subshort[i * 3 + 4] * 6 < enn) {\n factor *= 0.5;\n }\n }\n sub_short_factor[chn][i] = factor;\n }\n\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (var i = 1; i < 12; i++) {\n if (x < attack_intensity[i]) {\n x = attack_intensity[i];\n }\n }\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n\n /* compare energies between sub-shortblocks */\n for (var i = 0; i < 12; i++) {\n if (0 == ns_attacks[chn][i / 3]\n && attack_intensity[i] > attackThreshold) {\n ns_attacks[chn][i / 3] = (i % 3) + 1;\n }\n }\n\n /*\n * should have energy change between short blocks, in order to avoid\n * periodic signals\n */\n /* Good samples to show the effect are Trumpet test songs */\n /*\n * GB: tuned (1) to avoid too many short blocks for test sample\n * TRUMPET\n */\n /*\n * RH: tuned (2) to let enough short blocks through for test sample\n * FSOL and SNAPS\n */\n for (var i = 1; i < 4; i++) {\n var u = en_short[i - 1];\n var v = en_short[i];\n var m = Math.max(u, v);\n if (m < 40000) { /* (2) */\n if (u < 1.7 * v && v < 1.7 * u) { /* (1) */\n if (i == 1 && ns_attacks[chn][0] <= ns_attacks[chn][i]) {\n ns_attacks[chn][0] = 0;\n }\n ns_attacks[chn][i] = 0;\n }\n }\n }\n\n if (ns_attacks[chn][0] <= gfc.nsPsy.lastAttacks[chn]) {\n ns_attacks[chn][0] = 0;\n }\n\n if (gfc.nsPsy.lastAttacks[chn] == 3\n || (ns_attacks[chn][0] + ns_attacks[chn][1]\n + ns_attacks[chn][2] + ns_attacks[chn][3]) != 0) {\n ns_uselongblock = 0;\n\n if (ns_attacks[chn][1] != 0 && ns_attacks[chn][0] != 0) {\n ns_attacks[chn][1] = 0;\n }\n if (ns_attacks[chn][2] != 0 && ns_attacks[chn][1] != 0) {\n ns_attacks[chn][2] = 0;\n }\n if (ns_attacks[chn][3] != 0 && ns_attacks[chn][2] != 0) {\n ns_attacks[chn][3] = 0;\n }\n }\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n\n /*\n * there is a one granule delay. Copy maskings computed last call\n * into masking_ratio to return to calling program.\n */\n energy[chn] = gfc.tot_ener[chn];\n }\n }\n\n function vbrpsy_skip_masking_s(gfc, chn, sblock) {\n if (sblock == 0) {\n for (var b = 0; b < gfc.npart_s; b++) {\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = 0;\n }\n }\n }\n\n function vbrpsy_skip_masking_l(gfc, chn) {\n for (var b = 0; b < gfc.npart_l; b++) {\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = 0;\n }\n }\n\n function psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$3((gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n\n for (b = 1; b < gfc.npart_s - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n assert$3(b + 1 < gfc.npart_s);\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$3((gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1) > 0);\n a = 20.0\n * (m * 3.0 - a)\n / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b]\n + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert$3(b > 0);\n assert$3(b == gfc.npart_s - 1);\n\n a = avg[b - 1] + avg[b];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert$3((gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert$3(b == (gfc.npart_s - 1));\n }\n\n function vbrpsy_compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var max = new float[Encoder_1.CBANDS], avg = new_float$3(Encoder_1.CBANDS);\n var i, j, b;\n var mask_idx_s = new int[Encoder_1.CBANDS];\n\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0, m = 0;\n var n = gfc.numlines_s[b];\n for (i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n assert$3(ebb >= 0);\n max[b] = m;\n assert$3(n > 0);\n avg[b] = ebb / n;\n assert$3(avg[b] >= 0);\n }\n assert$3(b == gfc.npart_s);\n assert$3(j == 129);\n for (; b < Encoder_1.CBANDS; ++b) {\n max[b] = 0;\n avg[b] = 0;\n }\n psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx_s);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var last = gfc.s3ind_s[b][1];\n var dd, dd_n;\n var x, ecb, avg_mask;\n dd = mask_idx_s[kk];\n dd_n = 1;\n ecb = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ++j;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_s[kk];\n dd_n += 1;\n x = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ecb = vbrpsy_mask_add(ecb, x, kk - b);\n ++j;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n thr[b] = ecb;\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n {\n /*\n * if THR exceeds EB, the quantization routines will take the\n * difference from other bands. in case of strong tonal samples\n * (tonaltest.wav) this leads to heavy distortions. that's why\n * we limit THR here.\n */\n x = max[b];\n x *= gfc.minval_s[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb[b]) {\n thr[b] = eb[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n\n assert$3(thr[b] >= 0);\n }\n for (; b < Encoder_1.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n\n function vbrpsy_compute_masking_l(gfc, fftenergy, eb_l, thr, chn) {\n var max = new_float$3(Encoder_1.CBANDS), avg = new_float$3(Encoder_1.CBANDS);\n var mask_idx_l = new_int$3(Encoder_1.CBANDS + 2);\n var b;\n\n /*********************************************************************\n * Calculate the energy and the tonality of each partition.\n *********************************************************************/\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n\n /*********************************************************************\n * convolve the partitioned energy and unpredictability with the\n * spreading function, s3_l[b][k]\n ********************************************************************/\n var k = 0;\n for (b = 0; b < gfc.npart_l; b++) {\n var x, ecb, avg_mask, t;\n /* convolve the partitioned energy with the spreading function */\n var kk = gfc.s3ind[b][0];\n var last = gfc.s3ind[b][1];\n var dd = 0, dd_n = 0;\n dd = mask_idx_l[kk];\n dd_n += 1;\n ecb = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n ++k;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_l[kk];\n dd_n += 1;\n x = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n t = vbrpsy_mask_add(ecb, x, kk - b);\n ecb = t;\n ++k;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n\n /**** long block pre-echo control ****/\n /**\n *
\n             * dont use long block pre-echo control if previous granule was\n             * a short block.  This is to avoid the situation:\n             * frame0:  quiet (very low masking)\n             * frame1:  surge  (triggers short blocks)\n             * frame2:  regular frame.  looks like pre-echo when compared to\n             *          frame0, but all pre-echo was in frame1.\n             * 
\n */\n /*\n * chn=0,1 L and R channels chn=2,3 S and M channels.\n */\n if (gfc.blocktype_old[chn & 0x01] == Encoder_1.SHORT_TYPE) {\n var ecb_limit = rpelev * gfc.nb_1[chn][b];\n if (ecb_limit > 0) {\n thr[b] = Math.min(ecb, ecb_limit);\n } else {\n /**\n *
\n                     * Robert 071209:\n                     * Because we don't calculate long block psy when we know a granule\n                     * should be of short blocks, we don't have any clue how the granule\n                     * before would have looked like as a long block. So we have to guess\n                     * a little bit for this END_TYPE block.\n                     * Most of the time we get away with this sloppyness. (fingers crossed :)\n                     * The speed increase is worth it.\n                     * 
\n */\n thr[b] = Math.min(ecb, eb_l[b] * NS_PREECHO_ATT2);\n }\n } else {\n var ecb_limit_2 = rpelev2 * gfc.nb_2[chn][b];\n var ecb_limit_1 = rpelev * gfc.nb_1[chn][b];\n var ecb_limit;\n if (ecb_limit_2 <= 0) {\n ecb_limit_2 = ecb;\n }\n if (ecb_limit_1 <= 0) {\n ecb_limit_1 = ecb;\n }\n if (gfc.blocktype_old[chn & 0x01] == Encoder_1.NORM_TYPE) {\n ecb_limit = Math.min(ecb_limit_1, ecb_limit_2);\n } else {\n ecb_limit = ecb_limit_1;\n }\n thr[b] = Math.min(ecb, ecb_limit);\n }\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n {\n /*\n * if THR exceeds EB, the quantization routines will take the\n * difference from other bands. in case of strong tonal samples\n * (tonaltest.wav) this leads to heavy distortions. that's why\n * we limit THR here.\n */\n x = max[b];\n x *= gfc.minval_l[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb_l[b]) {\n thr[b] = eb_l[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n assert$3(thr[b] >= 0);\n }\n for (; b < Encoder_1.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n }\n\n function vbrpsy_compute_block_type(gfp, uselongblock) {\n var gfc = gfp.internal_flags;\n\n if (gfp.short_blocks == ShortBlock$3.short_block_coupled\n /* force both channels to use the same block type */\n /* this is necessary if the frame is to be encoded in ms_stereo. */\n /* But even without ms_stereo, FhG does this */\n && !(uselongblock[0] != 0 && uselongblock[1] != 0))\n uselongblock[0] = uselongblock[1] = 0;\n\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n /* disable short blocks */\n if (gfp.short_blocks == ShortBlock$3.short_block_dispensed) {\n uselongblock[chn] = 1;\n }\n if (gfp.short_blocks == ShortBlock$3.short_block_forced) {\n uselongblock[chn] = 0;\n }\n }\n }\n\n function vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d) {\n var gfc = gfp.internal_flags;\n\n /*\n * update the blocktype of the previous granule, since it depends on\n * what happend in this granule\n */\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n var blocktype = Encoder_1.NORM_TYPE;\n /* disable short blocks */\n\n if (uselongblock[chn] != 0) {\n /* no attack : use long blocks */\n assert$3(gfc.blocktype_old[chn] != Encoder_1.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder_1.SHORT_TYPE)\n blocktype = Encoder_1.STOP_TYPE;\n } else {\n /* attack : use short blocks */\n blocktype = Encoder_1.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder_1.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder_1.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder_1.STOP_TYPE)\n gfc.blocktype_old[chn] = Encoder_1.SHORT_TYPE;\n }\n\n blocktype_d[chn] = gfc.blocktype_old[chn];\n // value returned to calling program\n gfc.blocktype_old[chn] = blocktype;\n // save for next call to l3psy_anal\n }\n }\n\n /**\n * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper\n */\n function vbrpsy_compute_MS_thresholds(eb, thr, cb_mld, ath_cb, athadjust, msfix, n) {\n var msfix2 = msfix * 2;\n var athlower = msfix > 0 ? Math.pow(10, athadjust) : 1;\n var rside, rmid;\n for (var b = 0; b < n; ++b) {\n var ebM = eb[2][b];\n var ebS = eb[3][b];\n var thmL = thr[0][b];\n var thmR = thr[1][b];\n var thmM = thr[2][b];\n var thmS = thr[3][b];\n\n /* use this fix if L & R masking differs by 2db or less */\n if (thmL <= 1.58 * thmR && thmR <= 1.58 * thmL) {\n var mld_m = cb_mld[b] * ebS;\n var mld_s = cb_mld[b] * ebM;\n rmid = Math.max(thmM, Math.min(thmS, mld_m));\n rside = Math.max(thmS, Math.min(thmM, mld_s));\n } else {\n rmid = thmM;\n rside = thmS;\n }\n if (msfix > 0) {\n /***************************************************************/\n /* Adjust M/S maskings if user set \"msfix\" */\n /***************************************************************/\n /* Naoki Shibata 2000 */\n var thmLR, thmMS;\n var ath = ath_cb[b] * athlower;\n thmLR = Math.min(Math.max(thmL, ath), Math.max(thmR, ath));\n thmM = Math.max(rmid, ath);\n thmS = Math.max(rside, ath);\n thmMS = thmM + thmS;\n if (thmMS > 0 && (thmLR * msfix2) < thmMS) {\n var f = thmLR * msfix2 / thmMS;\n thmM *= f;\n thmS *= f;\n assert$3(thmMS > 0);\n }\n rmid = Math.min(thmM, rmid);\n rside = Math.min(thmS, rside);\n }\n if (rmid > ebM) {\n rmid = ebM;\n }\n if (rside > ebS) {\n rside = ebS;\n }\n thr[2][b] = rmid;\n thr[3][b] = rside;\n }\n }\n\n this.L3psycho_anal_vbr = function (gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n var gfc = gfp.internal_flags;\n\n /* fft and energy calculation */\n var wsamp_l;\n var wsamp_s;\n var fftenergy = new_float$3(Encoder_1.HBLKSIZE);\n var fftenergy_s = new_float_n$3([3, Encoder_1.HBLKSIZE_s]);\n var wsamp_L = new_float_n$3([2, Encoder_1.BLKSIZE]);\n var wsamp_S = new_float_n$3([2, 3, Encoder_1.BLKSIZE_s]);\n var eb = new_float_n$3([4, Encoder_1.CBANDS]), thr = new_float_n$3([4, Encoder_1.CBANDS]);\n var sub_short_factor = new_float_n$3([4, 3]);\n var pcfact = 0.6;\n\n /* block type */\n var ns_attacks = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0],\n [0, 0, 0, 0]];\n var uselongblock = new_int$3(2);\n\n /* usual variables like loop indices, etc.. */\n\n /* chn=2 and 3 = Mid and Side channels */\n var n_chn_psy = (gfp.mode == MPEGMode.JOINT_STEREO) ? 4\n : gfc.channels_out;\n\n vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio,\n masking_MS_ratio, energy, sub_short_factor, ns_attacks,\n uselongblock);\n\n vbrpsy_compute_block_type(gfp, uselongblock);\n\n /* LONG BLOCK CASE */\n {\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n wsamp_l = wsamp_L;\n vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out,\n fftenergy, wsamp_l, ch01);\n\n vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn,\n fftenergy);\n\n if (uselongblock[ch01] != 0) {\n vbrpsy_compute_masking_l(gfc, fftenergy, eb[chn], thr[chn],\n chn);\n } else {\n vbrpsy_skip_masking_l(gfc, chn);\n }\n }\n if ((uselongblock[0] + uselongblock[1]) == 2) {\n /* M/S channel */\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(eb, thr, gfc.mld_cb_l,\n gfc.ATH.cb_l, gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix, gfc.npart_l);\n }\n }\n /* TODO: apply adaptive ATH masking here ?? */\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n if (uselongblock[ch01] != 0) {\n convert_partition2scalefac_l(gfc, eb[chn], thr[chn], chn);\n }\n }\n }\n\n /* SHORT BLOCKS CASE */\n {\n for (var sblock = 0; sblock < 3; sblock++) {\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 0x01;\n\n if (uselongblock[ch01] != 0) {\n vbrpsy_skip_masking_s(gfc, chn, sblock);\n } else {\n /* compute masking thresholds for short blocks */\n wsamp_s = wsamp_S;\n vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock,\n fftenergy_s, wsamp_s, ch01);\n vbrpsy_compute_masking_s(gfp, fftenergy_s, eb[chn],\n thr[chn], chn, sblock);\n }\n }\n if ((uselongblock[0] + uselongblock[1]) == 0) {\n /* M/S channel */\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(eb, thr, gfc.mld_cb_s,\n gfc.ATH.cb_s, gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix, gfc.npart_s);\n }\n /* L/R channel */\n }\n /* TODO: apply adaptive ATH masking here ?? */\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 0x01;\n if (0 == uselongblock[ch01]) {\n convert_partition2scalefac_s(gfc, eb[chn], thr[chn],\n chn, sblock);\n }\n }\n }\n\n /**** short block pre-echo control ****/\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n\n if (uselongblock[ch01] != 0) {\n continue;\n }\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n var new_thmm = new_float$3(3);\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmm = gfc.thm[chn].s[sb][sblock];\n thmm *= NS_PREECHO_ATT0;\n\n if (ns_attacks[chn][sblock] >= 2\n || ns_attacks[chn][sblock + 1] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT1 * pcfact);\n thmm = Math.min(thmm, p);\n } else if (ns_attacks[chn][sblock] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n } else if ((sblock != 0 && ns_attacks[chn][sblock - 1] == 3)\n || (sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3)) {\n var idx = (sblock != 2) ? sblock + 1 : 0;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n /* pulse like signal detection for fatboy.wav and so on */\n thmm *= sub_short_factor[chn][sblock];\n\n new_thmm[sblock] = thmm;\n }\n for (var sblock = 0; sblock < 3; sblock++) {\n gfc.thm[chn].s[sb][sblock] = new_thmm[sblock];\n }\n }\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[chn][2];\n }\n\n /***************************************************************\n * determine final block type\n ***************************************************************/\n vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d);\n\n /*********************************************************************\n * compute the value of PE to return ... no delay and advance\n *********************************************************************/\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ppe;\n var ppePos;\n var type;\n var mr;\n\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder_1.NORM_TYPE;\n if (blocktype_d[0] == Encoder_1.SHORT_TYPE\n || blocktype_d[1] == Encoder_1.SHORT_TYPE)\n type = Encoder_1.SHORT_TYPE;\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n\n if (type == Encoder_1.SHORT_TYPE) {\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n } else {\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n }\n\n if (gfp.analysis) {\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n }\n }\n return 0;\n };\n\n function s3_func_x(bark, hf_slope) {\n var tempx = bark, tempy;\n\n if (tempx >= 0) {\n tempy = -tempx * 27;\n } else {\n tempy = tempx * hf_slope;\n }\n if (tempy <= -72.0) {\n return 0;\n }\n return Math.exp(tempy * LN_TO_LOG10);\n }\n\n function norm_s3_func_x(hf_slope) {\n var lim_a = 0, lim_b = 0;\n {\n var x = 0, l, h;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x -= 1)\n ;\n l = x;\n h = 0;\n while (Math.abs(h - l) > 1e-12) {\n x = (h + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n h = x;\n } else {\n l = x;\n }\n }\n lim_a = l;\n }\n {\n var x = 0, l, h;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x += 1)\n ;\n l = 0;\n h = x;\n while (Math.abs(h - l) > 1e-12) {\n x = (h + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n l = x;\n } else {\n h = x;\n }\n }\n lim_b = h;\n }\n {\n var sum = 0;\n var m = 1000;\n var i;\n for (i = 0; i <= m; ++i) {\n var x = lim_a + i * (lim_b - lim_a) / m;\n var y = s3_func_x(x, hf_slope);\n sum += y;\n }\n {\n var norm = (m + 1) / (sum * (lim_b - lim_a));\n /* printf( \"norm = %lf\\n\",norm); */\n return norm;\n }\n }\n }\n\n /**\n * The spreading function. Values returned in units of energy\n */\n function s3_func(bark) {\n var tempx, x, tempy, temp;\n tempx = bark;\n if (tempx >= 0)\n tempx *= 3;\n else\n tempx *= 1.5;\n\n if (tempx >= 0.5 && tempx <= 2.5) {\n temp = tempx - 0.5;\n x = 8.0 * (temp * temp - 2.0 * temp);\n } else\n x = 0.0;\n tempx += 0.474;\n tempy = 15.811389 + 7.5 * tempx - 17.5\n * Math.sqrt(1.0 + tempx * tempx);\n\n if (tempy <= -60.0)\n return 0.0;\n\n tempx = Math.exp((x + tempy) * LN_TO_LOG10);\n\n /**\n *
\n         * Normalization.  The spreading function should be normalized so that:\n         * +inf\n         * /\n         * |  s3 [ bark ]  d(bark)   =  1\n         * /\n         * -inf\n         * 
\n */\n tempx /= .6609193;\n return tempx;\n }\n\n /**\n * see for example \"Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7\n */\n function freq2bark(freq) {\n /* input: freq in hz output: barks */\n if (freq < 0)\n freq = 0;\n freq = freq * 0.001;\n return 13.0 * Math.atan(.76 * freq) + 3.5\n * Math.atan(freq * freq / (7.5 * 7.5));\n }\n\n function init_numline(numlines, bo, bm, bval, bval_width, mld, bo_w, sfreq, blksize, scalepos, deltafreq, sbmax) {\n var b_frq = new_float$3(Encoder_1.CBANDS + 1);\n var sample_freq_frac = sfreq / (sbmax > 15 ? 2 * 576 : 2 * 192);\n var partition = new_int$3(Encoder_1.HBLKSIZE);\n var i;\n sfreq /= blksize;\n var j = 0;\n var ni = 0;\n /* compute numlines, the number of spectral lines in each partition band */\n /* each partition band should be about DELBARK wide. */\n for (i = 0; i < Encoder_1.CBANDS; i++) {\n var bark1;\n var j2;\n bark1 = freq2bark(sfreq * j);\n\n b_frq[i] = sfreq * j;\n\n for (j2 = j; freq2bark(sfreq * j2) - bark1 < DELBARK\n && j2 <= blksize / 2; j2++)\n ;\n\n numlines[i] = j2 - j;\n ni = i + 1;\n\n while (j < j2) {\n assert$3(j < Encoder_1.HBLKSIZE);\n partition[j++] = i;\n }\n if (j > blksize / 2) {\n j = blksize / 2;\n ++i;\n break;\n }\n }\n assert$3(i < Encoder_1.CBANDS);\n b_frq[i] = sfreq * j;\n\n for (var sfb = 0; sfb < sbmax; sfb++) {\n var i1, i2, start, end;\n var arg;\n start = scalepos[sfb];\n end = scalepos[sfb + 1];\n\n i1 = 0 | Math.floor(.5 + deltafreq * (start - .5));\n if (i1 < 0)\n i1 = 0;\n i2 = 0 | Math.floor(.5 + deltafreq * (end - .5));\n\n if (i2 > blksize / 2)\n i2 = blksize / 2;\n\n bm[sfb] = (partition[i1] + partition[i2]) / 2;\n bo[sfb] = partition[i2];\n var f_tmp = sample_freq_frac * end;\n /*\n * calculate how much of this band belongs to current scalefactor\n * band\n */\n bo_w[sfb] = (f_tmp - b_frq[bo[sfb]])\n / (b_frq[bo[sfb] + 1] - b_frq[bo[sfb]]);\n if (bo_w[sfb] < 0) {\n bo_w[sfb] = 0;\n } else {\n if (bo_w[sfb] > 1) {\n bo_w[sfb] = 1;\n }\n }\n /* setup stereo demasking thresholds */\n /* formula reverse enginerred from plot in paper */\n arg = freq2bark(sfreq * scalepos[sfb] * deltafreq);\n arg = ( Math.min(arg, 15.5) / 15.5);\n\n mld[sfb] = Math.pow(10.0,\n 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n\n /* compute bark values of each critical band */\n j = 0;\n for (var k = 0; k < ni; k++) {\n var w = numlines[k];\n var bark1, bark2;\n\n bark1 = freq2bark(sfreq * (j));\n bark2 = freq2bark(sfreq * (j + w - 1));\n bval[k] = .5 * (bark1 + bark2);\n\n bark1 = freq2bark(sfreq * (j - .5));\n bark2 = freq2bark(sfreq * (j + w - .5));\n bval_width[k] = bark2 - bark1;\n j += w;\n }\n\n return ni;\n }\n\n function init_s3_values(s3ind, npart, bval, bval_width, norm, use_old_s3) {\n var s3 = new_float_n$3([Encoder_1.CBANDS, Encoder_1.CBANDS]);\n /*\n * The s3 array is not linear in the bark scale.\n *\n * bval[x] should be used to get the bark value.\n */\n var j;\n var numberOfNoneZero = 0;\n\n /**\n *
\n         * s[i][j], the value of the spreading function,\n         * centered at band j (masker), for band i (maskee)\n         *\n         * i.e.: sum over j to spread into signal barkval=i\n         * NOTE: i and j are used opposite as in the ISO docs\n         * 
\n */\n if (use_old_s3) {\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n var v = s3_func(bval[i] - bval[j]) * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n } else {\n for (j = 0; j < npart; j++) {\n var hf_slope = 15 + Math.min(21 / bval[j], 12);\n var s3_x_norm = norm_s3_func_x(hf_slope);\n for (var i = 0; i < npart; i++) {\n var v = s3_x_norm\n * s3_func_x(bval[i] - bval[j], hf_slope)\n * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n }\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n if (s3[i][j] > 0.0)\n break;\n }\n s3ind[i][0] = j;\n\n for (j = npart - 1; j > 0; j--) {\n if (s3[i][j] > 0.0)\n break;\n }\n s3ind[i][1] = j;\n numberOfNoneZero += (s3ind[i][1] - s3ind[i][0] + 1);\n }\n\n var p = new_float$3(numberOfNoneZero);\n var k = 0;\n for (var i = 0; i < npart; i++)\n for (j = s3ind[i][0]; j <= s3ind[i][1]; j++)\n p[k++] = s3[i][j];\n\n return p;\n }\n\n function stereo_demask(f) {\n /* setup stereo demasking thresholds */\n /* formula reverse enginerred from plot in paper */\n var arg = freq2bark(f);\n arg = (Math.min(arg, 15.5) / 15.5);\n\n return Math.pow(10.0,\n 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n\n /**\n * NOTE: the bitrate reduction from the inter-channel masking effect is low\n * compared to the chance of getting annyoing artefacts. L3psycho_anal_vbr\n * does not use this feature. (Robert 071216)\n */\n this.psymodel_init = function (gfp) {\n var gfc = gfp.internal_flags;\n var i;\n var useOldS3 = true;\n var bvl_a = 13, bvl_b = 24;\n var snr_l_a = 0, snr_l_b = 0;\n var snr_s_a = -8.25, snr_s_b = -4.5;\n var bval = new_float$3(Encoder_1.CBANDS);\n var bval_width = new_float$3(Encoder_1.CBANDS);\n var norm = new_float$3(Encoder_1.CBANDS);\n var sfreq = gfp.out_samplerate;\n\n switch (gfp.experimentalZ) {\n default:\n case 0:\n useOldS3 = true;\n break;\n case 1:\n useOldS3 = (gfp.VBR == VbrMode$3.vbr_mtrh || gfp.VBR == VbrMode$3.vbr_mt) ? false\n : true;\n break;\n case 2:\n useOldS3 = false;\n break;\n case 3:\n bvl_a = 8;\n snr_l_a = -1.75;\n snr_l_b = -0.0125;\n snr_s_a = -8.25;\n snr_s_b = -2.25;\n break;\n }\n gfc.ms_ener_ratio_old = .25;\n gfc.blocktype_old[0] = gfc.blocktype_old[1] = Encoder_1.NORM_TYPE;\n // the vbr header is long blocks\n\n for (i = 0; i < 4; ++i) {\n for (var j = 0; j < Encoder_1.CBANDS; ++j) {\n gfc.nb_1[i][j] = 1e20;\n gfc.nb_2[i][j] = 1e20;\n gfc.nb_s1[i][j] = gfc.nb_s2[i][j] = 1.0;\n }\n for (var sb = 0; sb < Encoder_1.SBMAX_l; sb++) {\n gfc.en[i].l[sb] = 1e20;\n gfc.thm[i].l[sb] = 1e20;\n }\n for (var j = 0; j < 3; ++j) {\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n gfc.en[i].s[sb][j] = 1e20;\n gfc.thm[i].s[sb][j] = 1e20;\n }\n gfc.nsPsy.lastAttacks[i] = 0;\n }\n for (var j = 0; j < 9; j++)\n gfc.nsPsy.last_en_subshort[i][j] = 10.;\n }\n\n /* init. for loudness approx. -jd 2001 mar 27 */\n gfc.loudness_sq_save[0] = gfc.loudness_sq_save[1] = 0.0;\n\n /*************************************************************************\n * now compute the psychoacoustic model specific constants\n ************************************************************************/\n /* compute numlines, bo, bm, bval, bval_width, mld */\n\n gfc.npart_l = init_numline(gfc.numlines_l, gfc.bo_l, gfc.bm_l, bval,\n bval_width, gfc.mld_l, gfc.PSY.bo_l_weight, sfreq,\n Encoder_1.BLKSIZE, gfc.scalefac_band.l, Encoder_1.BLKSIZE\n / (2.0 * 576), Encoder_1.SBMAX_l);\n assert$3(gfc.npart_l < Encoder_1.CBANDS);\n /* compute the spreading function */\n for (i = 0; i < gfc.npart_l; i++) {\n var snr = snr_l_a;\n if (bval[i] >= bvl_a) {\n snr = snr_l_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_l_a\n * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10.0, snr / 10.0);\n if (gfc.numlines_l[i] > 0) {\n gfc.rnumlines_l[i] = 1.0 / gfc.numlines_l[i];\n } else {\n gfc.rnumlines_l[i] = 0;\n }\n }\n gfc.s3_ll = init_s3_values(gfc.s3ind, gfc.npart_l, bval, bval_width,\n norm, useOldS3);\n\n /* compute long block specific values, ATH and MINVAL */\n var j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var x;\n\n /* ATH */\n x = Float$3.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_l[i]; k++, j++) {\n var freq = sfreq * j / (1000.0 * Encoder_1.BLKSIZE);\n var level;\n /*\n * ATH below 100 Hz constant, not further climbing\n */\n level = this.ATHformula(freq * 1000, gfp) - 20;\n // scale to FFT units; returned value is in dB\n level = Math.pow(10., 0.1 * level);\n // convert from dB . energy\n level *= gfc.numlines_l[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_l[i] = x;\n\n /*\n * MINVAL. For low freq, the strength of the masking is limited by\n * minval this is an ISO MPEG1 thing, dont know if it is really\n * needed\n */\n /*\n * FIXME: it does work to reduce low-freq problems in S53-Wind-Sax\n * and lead-voice samples, but introduces some 3 kbps bit bloat too.\n * TODO: Further refinement of the shape of this hack.\n */\n x = -20 + bval[i] * 20 / 10;\n if (x > 6) {\n x = 100;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8.;\n gfc.minval_l[i] = (Math.pow(10.0, x / 10.) * gfc.numlines_l[i]);\n }\n\n /************************************************************************\n * do the same things for short blocks\n ************************************************************************/\n gfc.npart_s = init_numline(gfc.numlines_s, gfc.bo_s, gfc.bm_s, bval,\n bval_width, gfc.mld_s, gfc.PSY.bo_s_weight, sfreq,\n Encoder_1.BLKSIZE_s, gfc.scalefac_band.s, Encoder_1.BLKSIZE_s\n / (2.0 * 192), Encoder_1.SBMAX_s);\n assert$3(gfc.npart_s < Encoder_1.CBANDS);\n\n /* SNR formula. short block is normalized by SNR. is it still right ? */\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var x;\n var snr = snr_s_a;\n if (bval[i] >= bvl_a) {\n snr = snr_s_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_s_a\n * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10.0, snr / 10.0);\n\n /* ATH */\n x = Float$3.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_s[i]; k++, j++) {\n var freq = sfreq * j / (1000.0 * Encoder_1.BLKSIZE_s);\n var level;\n /* freq = Min(.1,freq); */\n /*\n * ATH below 100 Hz constant, not\n * further climbing\n */\n level = this.ATHformula(freq * 1000, gfp) - 20;\n // scale to FFT units; returned value is in dB\n level = Math.pow(10., 0.1 * level);\n // convert from dB . energy\n level *= gfc.numlines_s[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_s[i] = x;\n\n /*\n * MINVAL. For low freq, the strength of the masking is limited by\n * minval this is an ISO MPEG1 thing, dont know if it is really\n * needed\n */\n x = (-7.0 + bval[i] * 7.0 / 12.0);\n if (bval[i] > 12) {\n x *= 1 + Math.log(1 + x) * 3.1;\n }\n if (bval[i] < 12) {\n x *= 1 + Math.log(1 - x) * 2.3;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8;\n gfc.minval_s[i] = Math.pow(10.0, x / 10)\n * gfc.numlines_s[i];\n }\n\n gfc.s3_ss = init_s3_values(gfc.s3ind_s, gfc.npart_s, bval, bval_width,\n norm, useOldS3);\n\n init_mask_add_max_values();\n fft.init_fft(gfc);\n\n /* setup temporal masking */\n gfc.decay = Math.exp(-1.0 * LOG10\n / (temporalmask_sustain_sec * sfreq / 192.0));\n\n {\n var msfix;\n msfix = NS_MSFIX;\n if ((gfp.exp_nspsytune & 2) != 0)\n msfix = 1.0;\n if (Math.abs(gfp.msfix) > 0.0)\n msfix = gfp.msfix;\n gfp.msfix = msfix;\n\n /*\n * spread only from npart_l bands. Normally, we use the spreading\n * function to convolve from npart_l down to npart_l bands\n */\n for (var b = 0; b < gfc.npart_l; b++)\n if (gfc.s3ind[b][1] > gfc.npart_l - 1)\n gfc.s3ind[b][1] = gfc.npart_l - 1;\n }\n\n /*\n * prepare for ATH auto adjustment: we want to decrease the ATH by 12 dB\n * per second\n */\n var frame_duration = (576. * gfc.mode_gr / sfreq);\n gfc.ATH.decay = Math.pow(10., -12. / 10. * frame_duration);\n gfc.ATH.adjust = 0.01;\n /* minimum, for leading low loudness */\n gfc.ATH.adjustLimit = 1.0;\n /* on lead, allow adjust up to maximum */\n\n assert$3(gfc.bo_l[Encoder_1.SBMAX_l - 1] <= gfc.npart_l);\n assert$3(gfc.bo_s[Encoder_1.SBMAX_s - 1] <= gfc.npart_s);\n\n if (gfp.ATHtype != -1) {\n /* compute equal loudness weights (eql_w) */\n var freq;\n var freq_inc = gfp.out_samplerate\n / (Encoder_1.BLKSIZE);\n var eql_balance = 0.0;\n freq = 0.0;\n for (i = 0; i < Encoder_1.BLKSIZE / 2; ++i) {\n /* convert ATH dB to relative power (not dB) */\n /* to determine eql_w */\n freq += freq_inc;\n gfc.ATH.eql_w[i] = 1. / Math.pow(10, this.ATHformula(freq, gfp) / 10);\n eql_balance += gfc.ATH.eql_w[i];\n }\n eql_balance = 1.0 / eql_balance;\n for (i = Encoder_1.BLKSIZE / 2; --i >= 0;) { /* scale weights */\n gfc.ATH.eql_w[i] *= eql_balance;\n }\n }\n {\n for (var b = j = 0; b < gfc.npart_s; ++b) {\n for (i = 0; i < gfc.numlines_s[b]; ++i) {\n ++j;\n }\n }\n assert$3(j == 129);\n for (var b = j = 0; b < gfc.npart_l; ++b) {\n for (i = 0; i < gfc.numlines_l[b]; ++i) {\n ++j;\n }\n }\n assert$3(j == 513);\n }\n j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var freq = sfreq * (j + gfc.numlines_l[i] / 2) / (1.0 * Encoder_1.BLKSIZE);\n gfc.mld_cb_l[i] = stereo_demask(freq);\n j += gfc.numlines_l[i];\n }\n for (; i < Encoder_1.CBANDS; ++i) {\n gfc.mld_cb_l[i] = 1;\n }\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var freq = sfreq * (j + gfc.numlines_s[i] / 2) / (1.0 * Encoder_1.BLKSIZE_s);\n gfc.mld_cb_s[i] = stereo_demask(freq);\n j += gfc.numlines_s[i];\n }\n for (; i < Encoder_1.CBANDS; ++i) {\n gfc.mld_cb_s[i] = 1;\n }\n return 0;\n };\n\n /**\n * Those ATH formulas are returning their minimum value for input = -1\n */\n function ATHformula_GB(f, value) {\n /**\n *
\n         *  from Painter & Spanias\n         *           modified by Gabriel Bouvigne to better fit the reality\n         *           ath =    3.640 * pow(f,-0.8)\n         *           - 6.800 * exp(-0.6*pow(f-3.4,2.0))\n         *           + 6.000 * exp(-0.15*pow(f-8.7,2.0))\n         *           + 0.6* 0.001 * pow(f,4.0);\n         *\n         *\n         *           In the past LAME was using the Painter &Spanias formula.\n         *           But we had some recurrent problems with HF content.\n         *           We measured real ATH values, and found the older formula\n         *           to be inaccurate in the higher part. So we made this new\n         *           formula and this solved most of HF problematic test cases.\n         *           The tradeoff is that in VBR mode it increases a lot the\n         *           bitrate.\n         * 
\n */\n\n /*\n * This curve can be adjusted according to the VBR scale: it adjusts\n * from something close to Painter & Spanias on V9 up to Bouvigne's\n * formula for V0. This way the VBR bitrate is more balanced according\n * to the -V value.\n */\n\n // the following Hack allows to ask for the lowest value\n if (f < -.3)\n f = 3410;\n\n // convert to khz\n f /= 1000;\n f = Math.max(0.1, f);\n var ath = 3.640 * Math.pow(f, -0.8) - 6.800\n * Math.exp(-0.6 * Math.pow(f - 3.4, 2.0)) + 6.000\n * Math.exp(-0.15 * Math.pow(f - 8.7, 2.0))\n + (0.6 + 0.04 * value) * 0.001 * Math.pow(f, 4.0);\n return ath;\n }\n\n this.ATHformula = function (f, gfp) {\n var ath;\n switch (gfp.ATHtype) {\n case 0:\n ath = ATHformula_GB(f, 9);\n break;\n case 1:\n // over sensitive, should probably be removed\n ath = ATHformula_GB(f, -1);\n break;\n case 2:\n ath = ATHformula_GB(f, 0);\n break;\n case 3:\n // modification of GB formula by Roel\n ath = ATHformula_GB(f, 1) + 6;\n break;\n case 4:\n ath = ATHformula_GB(f, gfp.ATHcurve);\n break;\n default:\n ath = ATHformula_GB(f, 0);\n break;\n }\n return ath;\n };\n\n}\n\nvar PsyModel_1 = PsyModel;\n\n//package mp3;\n\n/* MPEG modes */\nfunction MPEGMode$1(ordinal) {\n var _ordinal = ordinal;\n this.ordinal = function () {\n return _ordinal;\n };\n}\n\nMPEGMode$1.STEREO = new MPEGMode$1(0);\nMPEGMode$1.JOINT_STEREO = new MPEGMode$1(1);\nMPEGMode$1.DUAL_CHANNEL = new MPEGMode$1(2);\nMPEGMode$1.MONO = new MPEGMode$1(3);\nMPEGMode$1.NOT_SET = new MPEGMode$1(4);\n\nvar MPEGMode_1 = MPEGMode$1;\n\nfunction LameGlobalFlags() {\n\n this.class_id = 0;\n\n /* input description */\n\n /**\n * number of samples. default=-1\n */\n this.num_samples = 0;\n /**\n * input number of channels. default=2\n */\n this.num_channels = 0;\n /**\n * input_samp_rate in Hz. default=44.1 kHz\n */\n this.in_samplerate = 0;\n /**\n * output_samp_rate. default: LAME picks best value at least not used for\n * MP3 decoding: Remember 44.1 kHz MP3s and AC97\n */\n this.out_samplerate = 0;\n /**\n * scale input by this amount before encoding at least not used for MP3\n * decoding\n */\n this.scale = 0.;\n /**\n * scale input of channel 0 (left) by this amount before encoding\n */\n this.scale_left = 0.;\n /**\n * scale input of channel 1 (right) by this amount before encoding\n */\n this.scale_right = 0.;\n\n /* general control params */\n /**\n * collect data for a MP3 frame analyzer?\n */\n this.analysis = false;\n /**\n * add Xing VBR tag?\n */\n this.bWriteVbrTag = false;\n\n /**\n * use lame/mpglib to convert mp3 to wav\n */\n this.decode_only = false;\n /**\n * quality setting 0=best, 9=worst default=5\n */\n this.quality = 0;\n /**\n * see enum default = LAME picks best value\n */\n this.mode = MPEGMode_1.STEREO;\n /**\n * force M/S mode. requires mode=1\n */\n this.force_ms = false;\n /**\n * use free format? default=0\n */\n this.free_format = false;\n /**\n * find the RG value? default=0\n */\n this.findReplayGain = false;\n /**\n * decode on the fly? default=0\n */\n this.decode_on_the_fly = false;\n /**\n * 1 (default) writes ID3 tags, 0 not\n */\n this.write_id3tag_automatic = false;\n\n /*\n * set either brate>0 or compression_ratio>0, LAME will compute the value of\n * the variable not set. Default is compression_ratio = 11.025\n */\n /**\n * bitrate\n */\n this.brate = 0;\n /**\n * sizeof(wav file)/sizeof(mp3 file)\n */\n this.compression_ratio = 0.;\n\n /* frame params */\n /**\n * mark as copyright. default=0\n */\n this.copyright = 0;\n /**\n * mark as original. default=1\n */\n this.original = 0;\n /**\n * the MP3 'private extension' bit. Meaningless\n */\n this.extension = 0;\n /**\n * Input PCM is emphased PCM (for instance from one of the rarely emphased\n * CDs), it is STRONGLY not recommended to use this, because psycho does not\n * take it into account, and last but not least many decoders don't care\n * about these bits\n */\n this.emphasis = 0;\n /**\n * use 2 bytes per frame for a CRC checksum. default=0\n */\n this.error_protection = 0;\n /**\n * enforce ISO spec as much as possible\n */\n this.strict_ISO = false;\n\n /**\n * use bit reservoir?\n */\n this.disable_reservoir = false;\n\n /* quantization/noise shaping */\n this.quant_comp = 0;\n this.quant_comp_short = 0;\n this.experimentalY = false;\n this.experimentalZ = 0;\n this.exp_nspsytune = 0;\n\n this.preset = 0;\n\n /* VBR control */\n this.VBR = null;\n /**\n * Range [0,...,1[\n */\n this.VBR_q_frac = 0.;\n /**\n * Range [0,...,9]\n */\n this.VBR_q = 0;\n this.VBR_mean_bitrate_kbps = 0;\n this.VBR_min_bitrate_kbps = 0;\n this.VBR_max_bitrate_kbps = 0;\n /**\n * strictly enforce VBR_min_bitrate normaly, it will be violated for analog\n * silence\n */\n this.VBR_hard_min = 0;\n\n /* resampling and filtering */\n\n /**\n * freq in Hz. 0=lame choses. -1=no filter\n */\n this.lowpassfreq = 0;\n /**\n * freq in Hz. 0=lame choses. -1=no filter\n */\n this.highpassfreq = 0;\n /**\n * freq width of filter, in Hz (default=15%)\n */\n this.lowpasswidth = 0;\n /**\n * freq width of filter, in Hz (default=15%)\n */\n this.highpasswidth = 0;\n\n /*\n * psycho acoustics and other arguments which you should not change unless\n * you know what you are doing\n */\n\n this.maskingadjust = 0.;\n this.maskingadjust_short = 0.;\n /**\n * only use ATH\n */\n this.ATHonly = false;\n /**\n * only use ATH for short blocks\n */\n this.ATHshort = false;\n /**\n * disable ATH\n */\n this.noATH = false;\n /**\n * select ATH formula\n */\n this.ATHtype = 0;\n /**\n * change ATH formula 4 shape\n */\n this.ATHcurve = 0.;\n /**\n * lower ATH by this many db\n */\n this.ATHlower = 0.;\n /**\n * select ATH auto-adjust scheme\n */\n this.athaa_type = 0;\n /**\n * select ATH auto-adjust loudness calc\n */\n this.athaa_loudapprox = 0;\n /**\n * dB, tune active region of auto-level\n */\n this.athaa_sensitivity = 0.;\n this.short_blocks = null;\n /**\n * use temporal masking effect\n */\n this.useTemporal = false;\n this.interChRatio = 0.;\n /**\n * Naoki's adjustment of Mid/Side maskings\n */\n this.msfix = 0.;\n\n /**\n * 0 off, 1 on\n */\n this.tune = false;\n /**\n * used to pass values for debugging and stuff\n */\n this.tune_value_a = 0.;\n\n /************************************************************************/\n /* internal variables, do not set... */\n /* provided because they may be of use to calling application */\n /************************************************************************/\n\n /**\n * 0=MPEG-2/2.5 1=MPEG-1\n */\n this.version = 0;\n this.encoder_delay = 0;\n /**\n * number of samples of padding appended to input\n */\n this.encoder_padding = 0;\n this.framesize = 0;\n /**\n * number of frames encoded\n */\n this.frameNum = 0;\n /**\n * is this struct owned by calling program or lame?\n */\n this.lame_allocated_gfp = 0;\n /**************************************************************************/\n /* more internal variables are stored in this structure: */\n /**************************************************************************/\n this.internal_flags = null;\n}\n\nvar LameGlobalFlags_1 = LameGlobalFlags;\n\nvar L3Side$1 = {};\n\n\n\t/**\n\t * max scalefactor band, max(SBMAX_l, SBMAX_s*3, (SBMAX_s-3)*3+8)\n\t */\nL3Side$1.SFBMAX = (Encoder_1.SBMAX_s * 3);\n\nvar L3Side_1 = L3Side$1;\n\nvar new_float$10 = common.new_float;\nvar new_int$10 = common.new_int;\nfunction GrInfo() {\n //float xr[] = new float[576];\n this.xr = new_float$10(576);\n //int l3_enc[] = new int[576];\n this.l3_enc = new_int$10(576);\n //int scalefac[] = new int[L3Side.SFBMAX];\n this.scalefac = new_int$10(L3Side_1.SFBMAX);\n this.xrpow_max = 0.;\n\n this.part2_3_length = 0;\n this.big_values = 0;\n this.count1 = 0;\n this.global_gain = 0;\n this.scalefac_compress = 0;\n this.block_type = 0;\n this.mixed_block_flag = 0;\n this.table_select = new_int$10(3);\n this.subblock_gain = new_int$10(3 + 1);\n this.region0_count = 0;\n this.region1_count = 0;\n this.preflag = 0;\n this.scalefac_scale = 0;\n this.count1table_select = 0;\n\n this.part2_length = 0;\n this.sfb_lmax = 0;\n this.sfb_smin = 0;\n this.psy_lmax = 0;\n this.sfbmax = 0;\n this.psymax = 0;\n this.sfbdivide = 0;\n this.width = new_int$10(L3Side_1.SFBMAX);\n this.window = new_int$10(L3Side_1.SFBMAX);\n this.count1bits = 0;\n /**\n * added for LSF\n */\n this.sfb_partition_table = null;\n this.slen = new_int$10(4);\n\n this.max_nonzero_coeff = 0;\n\n var self = this;\n function clone_int(array) {\n return new Int32Array(array);\n }\n function clone_float(array) {\n return new Float32Array(array);\n }\n this.assign = function (other) {\n self.xr = clone_float(other.xr); //.slice(0); //clone();\n self.l3_enc = clone_int(other.l3_enc); //.slice(0); //clone();\n self.scalefac = clone_int(other.scalefac);//.slice(0); //clone();\n self.xrpow_max = other.xrpow_max;\n\n self.part2_3_length = other.part2_3_length;\n self.big_values = other.big_values;\n self.count1 = other.count1;\n self.global_gain = other.global_gain;\n self.scalefac_compress = other.scalefac_compress;\n self.block_type = other.block_type;\n self.mixed_block_flag = other.mixed_block_flag;\n self.table_select = clone_int(other.table_select);//.slice(0); //clone();\n self.subblock_gain = clone_int(other.subblock_gain); //.slice(0); //.clone();\n self.region0_count = other.region0_count;\n self.region1_count = other.region1_count;\n self.preflag = other.preflag;\n self.scalefac_scale = other.scalefac_scale;\n self.count1table_select = other.count1table_select;\n\n self.part2_length = other.part2_length;\n self.sfb_lmax = other.sfb_lmax;\n self.sfb_smin = other.sfb_smin;\n self.psy_lmax = other.psy_lmax;\n self.sfbmax = other.sfbmax;\n self.psymax = other.psymax;\n self.sfbdivide = other.sfbdivide;\n self.width = clone_int(other.width); //.slice(0); //.clone();\n self.window = clone_int(other.window); //.slice(0); //.clone();\n self.count1bits = other.count1bits;\n\n self.sfb_partition_table = other.sfb_partition_table.slice(0); //.clone();\n self.slen = clone_int(other.slen); //.slice(0); //.clone();\n self.max_nonzero_coeff = other.max_nonzero_coeff;\n };\n}\n\nvar GrInfo_1 = GrInfo;\n\nvar new_int$9 = common.new_int;\nfunction IIISideInfo() {\n this.tt = [[null, null], [null, null]];\n this.main_data_begin = 0;\n this.private_bits = 0;\n this.resvDrain_pre = 0;\n this.resvDrain_post = 0;\n this.scfsi = [new_int$9(4), new_int$9(4)];\n\n for (var gr = 0; gr < 2; gr++) {\n for (var ch = 0; ch < 2; ch++) {\n this.tt[gr][ch] = new GrInfo_1();\n }\n }\n}\n\nvar IIISideInfo_1 = IIISideInfo;\n\n//package mp3;\n\n/**\n * Layer III side information.\n *\n * @author Ken\n *\n */\n\n\nvar System$11 = common.System;\nvar new_int$11 = common.new_int;\nfunction ScaleFac(arrL, arrS, arr21, arr12) {\n\n this.l = new_int$11(1 + Encoder_1.SBMAX_l);\n this.s = new_int$11(1 + Encoder_1.SBMAX_s);\n this.psfb21 = new_int$11(1 + Encoder_1.PSFB21);\n this.psfb12 = new_int$11(1 + Encoder_1.PSFB12);\n var l = this.l;\n var s = this.s;\n\n if (arguments.length == 4) {\n //public ScaleFac(final int[] arrL, final int[] arrS, final int[] arr21,\n // final int[] arr12) {\n this.arrL = arguments[0];\n this.arrS = arguments[1];\n this.arr21 = arguments[2];\n this.arr12 = arguments[3];\n\n System$11.arraycopy(this.arrL, 0, l, 0, Math.min(this.arrL.length, this.l.length));\n System$11.arraycopy(this.arrS, 0, s, 0, Math.min(this.arrS.length, this.s.length));\n System$11.arraycopy(this.arr21, 0, this.psfb21, 0, Math.min(this.arr21.length, this.psfb21.length));\n System$11.arraycopy(this.arr12, 0, this.psfb12, 0, Math.min(this.arr12.length, this.psfb12.length));\n }\n}\n\nvar ScaleFac_1 = ScaleFac;\n\nvar new_float$12 = common.new_float;\nvar new_float_n$12 = common.new_float_n;\nvar new_int$12 = common.new_int;\n//package mp3;\n\n/**\n * Variables used for --nspsytune\n *\n * @author Ken\n *\n */\nfunction NsPsy() {\n this.last_en_subshort = new_float_n$12([4, 9]);\n this.lastAttacks = new_int$12(4);\n this.pefirbuf = new_float$12(19);\n this.longfact = new_float$12(Encoder_1.SBMAX_l);\n this.shortfact = new_float$12(Encoder_1.SBMAX_s);\n\n /**\n * short block tuning\n */\n this.attackthre = 0.;\n this.attackthre_s = 0.;\n}\n\nvar NsPsy_1 = NsPsy;\n\n//package mp3;\n\nfunction VBRSeekInfo() {\n /**\n * What we have seen so far.\n */\n this.sum = 0;\n /**\n * How many frames we have seen in this chunk.\n */\n this.seen = 0;\n /**\n * How many frames we want to collect into one chunk.\n */\n this.want = 0;\n /**\n * Actual position in our bag.\n */\n this.pos = 0;\n /**\n * Size of our bag.\n */\n this.size = 0;\n /**\n * Pointer to our bag.\n */\n this.bag = null;\n this.nVbrNumFrames = 0;\n this.nBytesWritten = 0;\n /* VBR tag data */\n this.TotalFrameSize = 0;\n}\n\nvar VBRSeekInfo_1 = VBRSeekInfo;\n\nvar new_byte$8 = common.new_byte;\nvar new_double$8 = common.new_double;\nvar new_float$8 = common.new_float;\nvar new_float_n$8 = common.new_float_n;\nvar new_int$8 = common.new_int;\nvar new_int_n$8 = common.new_int_n;\nLameInternalFlags$1.MFSIZE = (3 * 1152 + Encoder_1.ENCDELAY - Encoder_1.MDCTDELAY);\nLameInternalFlags$1.MAX_HEADER_BUF = 256;\nLameInternalFlags$1.MAX_BITS_PER_CHANNEL = 4095;\nLameInternalFlags$1.MAX_BITS_PER_GRANULE = 7680;\nLameInternalFlags$1.BPC = 320;\n\nfunction LameInternalFlags$1() {\n var MAX_HEADER_LEN = 40;\n\n\n /********************************************************************\n * internal variables NOT set by calling program, and should not be *\n * modified by the calling program *\n ********************************************************************/\n\n /**\n * Some remarks to the Class_ID field: The Class ID is an Identifier for a\n * pointer to this struct. It is very unlikely that a pointer to\n * lame_global_flags has the same 32 bits in it's structure (large and other\n * special properties, for instance prime).\n *\n * To test that the structure is right and initialized, use: if ( gfc .\n * Class_ID == LAME_ID ) ... Other remark: If you set a flag to 0 for uninit\n * data and 1 for init data, the right test should be \"if (flag == 1)\" and\n * NOT \"if (flag)\". Unintended modification of this element will be\n * otherwise misinterpreted as an init.\n */\n this.Class_ID = 0;\n\n this.lame_encode_frame_init = 0;\n this.iteration_init_init = 0;\n this.fill_buffer_resample_init = 0;\n\n //public float mfbuf[][] = new float[2][MFSIZE];\n this.mfbuf = new_float_n$8([2, LameInternalFlags$1.MFSIZE]);\n\n /**\n * granules per frame\n */\n this.mode_gr = 0;\n /**\n * number of channels in the input data stream (PCM or decoded PCM)\n */\n this.channels_in = 0;\n /**\n * number of channels in the output data stream (not used for decoding)\n */\n this.channels_out = 0;\n /**\n * input_samp_rate/output_samp_rate\n */\n //public double resample_ratio;\n this.resample_ratio = 0.;\n\n this.mf_samples_to_encode = 0;\n this.mf_size = 0;\n /**\n * min bitrate index\n */\n this.VBR_min_bitrate = 0;\n /**\n * max bitrate index\n */\n this.VBR_max_bitrate = 0;\n this.bitrate_index = 0;\n this.samplerate_index = 0;\n this.mode_ext = 0;\n\n /* lowpass and highpass filter control */\n /**\n * normalized frequency bounds of passband\n */\n this.lowpass1 = 0.;\n this.lowpass2 = 0.;\n /**\n * normalized frequency bounds of passband\n */\n this.highpass1 = 0.;\n this.highpass2 = 0.;\n\n /**\n * 0 = none 1 = ISO AAC model 2 = allow scalefac_select=1\n */\n this.noise_shaping = 0;\n\n /**\n * 0 = ISO model: amplify all distorted bands
\n * 1 = amplify within 50% of max (on db scale)
\n * 2 = amplify only most distorted band
\n * 3 = method 1 and refine with method 2
\n */\n this.noise_shaping_amp = 0;\n /**\n * 0 = no substep
\n * 1 = use substep shaping at last step(VBR only)
\n * (not implemented yet)
\n * 2 = use substep inside loop
\n * 3 = use substep inside loop and last step
\n */\n this.substep_shaping = 0;\n\n /**\n * 1 = gpsycho. 0 = none\n */\n this.psymodel = 0;\n /**\n * 0 = stop at over=0, all scalefacs amplified or
\n * a scalefac has reached max value
\n * 1 = stop when all scalefacs amplified or a scalefac has reached max value
\n * 2 = stop when all scalefacs amplified\n */\n this.noise_shaping_stop = 0;\n\n /**\n * 0 = no, 1 = yes\n */\n this.subblock_gain = 0;\n /**\n * 0 = no. 1=outside loop 2=inside loop(slow)\n */\n this.use_best_huffman = 0;\n\n /**\n * 0 = stop early after 0 distortion found. 1 = full search\n */\n this.full_outer_loop = 0;\n\n //public IIISideInfo l3_side = new IIISideInfo();\n this.l3_side = new IIISideInfo_1();\n this.ms_ratio = new_float$8(2);\n\n /* used for padding */\n /**\n * padding for the current frame?\n */\n this.padding = 0;\n this.frac_SpF = 0;\n this.slot_lag = 0;\n\n /**\n * optional ID3 tags\n */\n //public ID3TagSpec tag_spec;\n this.tag_spec = null;\n this.nMusicCRC = 0;\n\n /* variables used by Quantize */\n //public int OldValue[] = new int[2];\n this.OldValue = new_int$8(2);\n //public int CurrentStep[] = new int[2];\n this.CurrentStep = new_int$8(2);\n\n this.masking_lower = 0.;\n //public int bv_scf[] = new int[576];\n this.bv_scf = new_int$8(576);\n //public int pseudohalf[] = new int[L3Side.SFBMAX];\n this.pseudohalf = new_int$8(L3Side_1.SFBMAX);\n\n /**\n * will be set in lame_init_params\n */\n this.sfb21_extra = false;\n\n /* BPC = maximum number of filter convolution windows to precompute */\n //public float[][] inbuf_old = new float[2][];\n this.inbuf_old = new Array(2);\n //public float[][] blackfilt = new float[2 * BPC + 1][];\n this.blackfilt = new Array(2 * LameInternalFlags$1.BPC + 1);\n //public double itime[] = new double[2];\n this.itime = new_double$8(2);\n this.sideinfo_len = 0;\n\n /* variables for newmdct.c */\n //public float sb_sample[][][][] = new float[2][2][18][Encoder.SBLIMIT];\n this.sb_sample = new_float_n$8([2, 2, 18, Encoder_1.SBLIMIT]);\n this.amp_filter = new_float$8(32);\n\n /* variables for BitStream */\n\n /**\n *
\n     * mpeg1: buffer=511 bytes  smallest frame: 96-38(sideinfo)=58\n     * max number of frames in reservoir:  8\n     * mpeg2: buffer=255 bytes.  smallest frame: 24-23bytes=1\n     * with VBR, if you are encoding all silence, it is possible to\n     * have 8kbs/24khz frames with 1byte of data each, which means we need\n     * to buffer up to 255 headers!\n     * 
\n */\n /**\n * also, max_header_buf has to be a power of two\n */\n /**\n * max size of header is 38\n */\n\n function Header() {\n this.write_timing = 0;\n this.ptr = 0;\n //public byte buf[] = new byte[MAX_HEADER_LEN];\n this.buf = new_byte$8(MAX_HEADER_LEN);\n }\n\n this.header = new Array(LameInternalFlags$1.MAX_HEADER_BUF);\n\n this.h_ptr = 0;\n this.w_ptr = 0;\n this.ancillary_flag = 0;\n\n /* variables for Reservoir */\n /**\n * in bits\n */\n this.ResvSize = 0;\n /**\n * in bits\n */\n this.ResvMax = 0;\n\n //public ScaleFac scalefac_band = new ScaleFac();\n this.scalefac_band = new ScaleFac_1();\n\n /* daa from PsyModel */\n /* The static variables \"r\", \"phi_sav\", \"new\", \"old\" and \"oldest\" have */\n /* to be remembered for the unpredictability measure. For \"r\" and */\n /* \"phi_sav\", the first index from the left is the channel select and */\n /* the second index is the \"age\" of the data. */\n this.minval_l = new_float$8(Encoder_1.CBANDS);\n this.minval_s = new_float$8(Encoder_1.CBANDS);\n this.nb_1 = new_float_n$8([4, Encoder_1.CBANDS]);\n this.nb_2 = new_float_n$8([4, Encoder_1.CBANDS]);\n this.nb_s1 = new_float_n$8([4, Encoder_1.CBANDS]);\n this.nb_s2 = new_float_n$8([4, Encoder_1.CBANDS]);\n this.s3_ss = null;\n this.s3_ll = null;\n this.decay = 0.;\n\n //public III_psy_xmin[] thm = new III_psy_xmin[4];\n //public III_psy_xmin[] en = new III_psy_xmin[4];\n this.thm = new Array(4);\n this.en = new Array(4);\n\n /**\n * fft and energy calculation\n */\n this.tot_ener = new_float$8(4);\n\n /* loudness calculation (for adaptive threshold of hearing) */\n /**\n * loudness^2 approx. per granule and channel\n */\n this.loudness_sq = new_float_n$8([2, 2]);\n /**\n * account for granule delay of L3psycho_anal\n */\n this.loudness_sq_save = new_float$8(2);\n\n /**\n * Scale Factor Bands\n */\n this.mld_l = new_float$8(Encoder_1.SBMAX_l);\n this.mld_s = new_float$8(Encoder_1.SBMAX_s);\n this.bm_l = new_int$8(Encoder_1.SBMAX_l);\n this.bo_l = new_int$8(Encoder_1.SBMAX_l);\n this.bm_s = new_int$8(Encoder_1.SBMAX_s);\n this.bo_s = new_int$8(Encoder_1.SBMAX_s);\n this.npart_l = 0;\n this.npart_s = 0;\n\n this.s3ind = new_int_n$8([Encoder_1.CBANDS, 2]);\n this.s3ind_s = new_int_n$8([Encoder_1.CBANDS, 2]);\n\n this.numlines_s = new_int$8(Encoder_1.CBANDS);\n this.numlines_l = new_int$8(Encoder_1.CBANDS);\n this.rnumlines_l = new_float$8(Encoder_1.CBANDS);\n this.mld_cb_l = new_float$8(Encoder_1.CBANDS);\n this.mld_cb_s = new_float$8(Encoder_1.CBANDS);\n this.numlines_s_num1 = 0;\n this.numlines_l_num1 = 0;\n\n /* ratios */\n this.pe = new_float$8(4);\n this.ms_ratio_s_old = 0.;\n this.ms_ratio_l_old = 0.;\n this.ms_ener_ratio_old = 0.;\n\n /**\n * block type\n */\n this.blocktype_old = new_int$8(2);\n\n /**\n * variables used for --nspsytune\n */\n this.nsPsy = new NsPsy_1();\n\n /**\n * used for Xing VBR header\n */\n this.VBR_seek_table = new VBRSeekInfo_1();\n\n /**\n * all ATH related stuff\n */\n //public ATH ATH;\n this.ATH = null;\n\n this.PSY = null;\n\n this.nogap_total = 0;\n this.nogap_current = 0;\n\n /* ReplayGain */\n this.decode_on_the_fly = true;\n this.findReplayGain = true;\n this.findPeakSample = true;\n this.PeakSample = 0.;\n this.RadioGain = 0;\n this.AudiophileGain = 0;\n //public ReplayGain rgdata;\n this.rgdata = null;\n\n /**\n * gain change required for preventing clipping\n */\n this.noclipGainChange = 0;\n /**\n * user-specified scale factor required for preventing clipping\n */\n this.noclipScale = 0.;\n\n /* simple statistics */\n this.bitrate_stereoMode_Hist = new_int_n$8([16, 4 + 1]);\n /**\n * norm/start/short/stop/mixed(short)/sum\n */\n this.bitrate_blockType_Hist = new_int_n$8([16, 4 + 1 + 1]);\n\n //public PlottingData pinfo;\n //public MPGLib.mpstr_tag hip;\n this.pinfo = null;\n this.hip = null;\n\n this.in_buffer_nsamples = 0;\n //public float[] in_buffer_0;\n //public float[] in_buffer_1;\n this.in_buffer_0 = null;\n this.in_buffer_1 = null;\n\n //public IIterationLoop iteration_loop;\n this.iteration_loop = null;\n\n for (var i = 0; i < this.en.length; i++) {\n this.en[i] = new III_psy_xmin_1();\n }\n for (var i = 0; i < this.thm.length; i++) {\n this.thm[i] = new III_psy_xmin_1();\n }\n for (var i = 0; i < this.header.length; i++) {\n this.header[i] = new Header();\n }\n\n}\n\nvar LameInternalFlags_1 = LameInternalFlags$1;\n\nvar new_float$13 = common.new_float;\n/**\n * ATH related stuff, if something new ATH related has to be added, please plug\n * it here into the ATH.\n */\nfunction ATH() {\n /**\n * Method for the auto adjustment.\n */\n this.useAdjust = 0;\n /**\n * factor for tuning the (sample power) point below which adaptive threshold\n * of hearing adjustment occurs\n */\n this.aaSensitivityP = 0.;\n /**\n * Lowering based on peak volume, 1 = no lowering.\n */\n this.adjust = 0.;\n /**\n * Limit for dynamic ATH adjust.\n */\n this.adjustLimit = 0.;\n /**\n * Determined to lower x dB each second.\n */\n this.decay = 0.;\n /**\n * Lowest ATH value.\n */\n this.floor = 0.;\n /**\n * ATH for sfbs in long blocks.\n */\n this.l = new_float$13(Encoder_1.SBMAX_l);\n /**\n * ATH for sfbs in short blocks.\n */\n this.s = new_float$13(Encoder_1.SBMAX_s);\n /**\n * ATH for partitioned sfb21 in long blocks.\n */\n this.psfb21 = new_float$13(Encoder_1.PSFB21);\n /**\n * ATH for partitioned sfb12 in short blocks.\n */\n this.psfb12 = new_float$13(Encoder_1.PSFB12);\n /**\n * ATH for long block convolution bands.\n */\n this.cb_l = new_float$13(Encoder_1.CBANDS);\n /**\n * ATH for short block convolution bands.\n */\n this.cb_s = new_float$13(Encoder_1.CBANDS);\n /**\n * Equal loudness weights (based on ATH).\n */\n this.eql_w = new_float$13(Encoder_1.BLKSIZE / 2);\n}\n\nvar ATH_1 = ATH;\n\n/*\n * ReplayGainAnalysis - analyzes input samples and give the recommended dB change\n * Copyright (C) 2001 David Robinson and Glen Sawyer\n * Improvements and optimizations added by Frank Klemm, and by Marcel Muller \n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n *\n * concept and filter values by David Robinson (David@Robinson.org)\n * -- blame him if you think the idea is flawed\n * original coding by Glen Sawyer (mp3gain@hotmail.com)\n * -- blame him if you think this runs too slowly, or the coding is otherwise flawed\n *\n * lots of code improvements by Frank Klemm ( http://www.uni-jena.de/~pfk/mpp/ )\n * -- credit him for all the _good_ programming ;)\n *\n *\n * For an explanation of the concepts and the basic algorithms involved, go to:\n * http://www.replaygain.org/\n */\n\n/*\n * Here's the deal. Call\n *\n * InitGainAnalysis ( long samplefreq );\n *\n * to initialize everything. Call\n *\n * AnalyzeSamples ( var Float_t* left_samples,\n * var Float_t* right_samples,\n * size_t num_samples,\n * int num_channels );\n *\n * as many times as you want, with as many or as few samples as you want.\n * If mono, pass the sample buffer in through left_samples, leave\n * right_samples NULL, and make sure num_channels = 1.\n *\n * GetTitleGain()\n *\n * will return the recommended dB level change for all samples analyzed\n * SINCE THE LAST TIME you called GetTitleGain() OR InitGainAnalysis().\n *\n * GetAlbumGain()\n *\n * will return the recommended dB level change for all samples analyzed\n * since InitGainAnalysis() was called and finalized with GetTitleGain().\n *\n * Pseudo-code to process an album:\n *\n * Float_t l_samples [4096];\n * Float_t r_samples [4096];\n * size_t num_samples;\n * unsigned int num_songs;\n * unsigned int i;\n *\n * InitGainAnalysis ( 44100 );\n * for ( i = 1; i <= num_songs; i++ ) {\n * while ( ( num_samples = getSongSamples ( song[i], left_samples, right_samples ) ) > 0 )\n * AnalyzeSamples ( left_samples, right_samples, num_samples, 2 );\n * fprintf (\"Recommended dB change for song %2d: %+6.2 dB\\n\", i, GetTitleGain() );\n * }\n * fprintf (\"Recommended dB change for whole album: %+6.2 dB\\n\", GetAlbumGain() );\n */\n\n/*\n * So here's the main source of potential code confusion:\n *\n * The filters applied to the incoming samples are IIR filters,\n * meaning they rely on up to number of previous samples\n * AND up to number of previous filtered samples.\n *\n * I set up the AnalyzeSamples routine to minimize memory usage and interface\n * complexity. The speed isn't compromised too much (I don't think), but the\n * internal complexity is higher than it should be for such a relatively\n * simple routine.\n *\n * Optimization/clarity suggestions are welcome.\n */\n\nvar System$15 = common.System;\nvar Arrays$15 = common.Arrays;\n/**\n * Table entries per dB\n */\nGainAnalysis$1.STEPS_per_dB = 100.;\n/**\n * Table entries for 0...MAX_dB (normal max. values are 70...80 dB)\n */\nGainAnalysis$1.MAX_dB = 120.;\nGainAnalysis$1.GAIN_NOT_ENOUGH_SAMPLES = -24601;\nGainAnalysis$1.GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.GAIN_ANALYSIS_OK = 1;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_OK = 1;\n\nGainAnalysis$1.YULE_ORDER = 10;\nGainAnalysis$1.MAX_ORDER = GainAnalysis$1.YULE_ORDER;\n\nGainAnalysis$1.MAX_SAMP_FREQ = 48000;\nGainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR = 1;\nGainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR = 20;\nGainAnalysis$1.MAX_SAMPLES_PER_WINDOW = ((GainAnalysis$1.MAX_SAMP_FREQ * GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR) / GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR + 1);\n\nfunction GainAnalysis$1() {\n /**\n * calibration value for 89dB\n */\n var PINK_REF = 64.82;\n\n var YULE_ORDER = GainAnalysis$1.YULE_ORDER;\n /**\n * percentile which is louder than the proposed level\n */\n var RMS_PERCENTILE = 0.95;\n /**\n * maximum allowed sample frequency [Hz]\n */\n var MAX_SAMP_FREQ = GainAnalysis$1.MAX_SAMP_FREQ;\n var RMS_WINDOW_TIME_NUMERATOR = GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR;\n /**\n * numerator / denominator = time slice size [s]\n */\n var RMS_WINDOW_TIME_DENOMINATOR = GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR;\n /**\n * max. Samples per Time slice\n */\n var MAX_SAMPLES_PER_WINDOW = GainAnalysis$1.MAX_SAMPLES_PER_WINDOW;\n\n\n var ABYule = [\n [0.03857599435200, -3.84664617118067, -0.02160367184185,\n 7.81501653005538, -0.00123395316851, -11.34170355132042,\n -0.00009291677959, 13.05504219327545, -0.01655260341619,\n -12.28759895145294, 0.02161526843274, 9.48293806319790,\n -0.02074045215285, -5.87257861775999, 0.00594298065125,\n 2.75465861874613, 0.00306428023191, -0.86984376593551,\n 0.00012025322027, 0.13919314567432, 0.00288463683916],\n [0.05418656406430, -3.47845948550071, -0.02911007808948,\n 6.36317777566148, -0.00848709379851, -8.54751527471874,\n -0.00851165645469, 9.47693607801280, -0.00834990904936,\n -8.81498681370155, 0.02245293253339, 6.85401540936998,\n -0.02596338512915, -4.39470996079559, 0.01624864962975,\n 2.19611684890774, -0.00240879051584, -0.75104302451432,\n 0.00674613682247, 0.13149317958808, -0.00187763777362],\n [0.15457299681924, -2.37898834973084, -0.09331049056315,\n 2.84868151156327, -0.06247880153653, -2.64577170229825,\n 0.02163541888798, 2.23697657451713, -0.05588393329856,\n -1.67148153367602, 0.04781476674921, 1.00595954808547,\n 0.00222312597743, -0.45953458054983, 0.03174092540049,\n 0.16378164858596, -0.01390589421898, -0.05032077717131,\n 0.00651420667831, 0.02347897407020, -0.00881362733839],\n [0.30296907319327, -1.61273165137247, -0.22613988682123,\n 1.07977492259970, -0.08587323730772, -0.25656257754070,\n 0.03282930172664, -0.16276719120440, -0.00915702933434,\n -0.22638893773906, -0.02364141202522, 0.39120800788284,\n -0.00584456039913, -0.22138138954925, 0.06276101321749,\n 0.04500235387352, -0.00000828086748, 0.02005851806501,\n 0.00205861885564, 0.00302439095741, -0.02950134983287],\n [0.33642304856132, -1.49858979367799, -0.25572241425570,\n 0.87350271418188, -0.11828570177555, 0.12205022308084,\n 0.11921148675203, -0.80774944671438, -0.07834489609479,\n 0.47854794562326, -0.00469977914380, -0.12453458140019,\n -0.00589500224440, -0.04067510197014, 0.05724228140351,\n 0.08333755284107, 0.00832043980773, -0.04237348025746,\n -0.01635381384540, 0.02977207319925, -0.01760176568150],\n [0.44915256608450, -0.62820619233671, -0.14351757464547,\n 0.29661783706366, -0.22784394429749, -0.37256372942400,\n -0.01419140100551, 0.00213767857124, 0.04078262797139,\n -0.42029820170918, -0.12398163381748, 0.22199650564824,\n 0.04097565135648, 0.00613424350682, 0.10478503600251,\n 0.06747620744683, -0.01863887810927, 0.05784820375801,\n -0.03193428438915, 0.03222754072173, 0.00541907748707],\n [0.56619470757641, -1.04800335126349, -0.75464456939302,\n 0.29156311971249, 0.16242137742230, -0.26806001042947,\n 0.16744243493672, 0.00819999645858, -0.18901604199609,\n 0.45054734505008, 0.30931782841830, -0.33032403314006,\n -0.27562961986224, 0.06739368333110, 0.00647310677246,\n -0.04784254229033, 0.08647503780351, 0.01639907836189,\n -0.03788984554840, 0.01807364323573, -0.00588215443421],\n [0.58100494960553, -0.51035327095184, -0.53174909058578,\n -0.31863563325245, -0.14289799034253, -0.20256413484477,\n 0.17520704835522, 0.14728154134330, 0.02377945217615,\n 0.38952639978999, 0.15558449135573, -0.23313271880868,\n -0.25344790059353, -0.05246019024463, 0.01628462406333,\n -0.02505961724053, 0.06920467763959, 0.02442357316099,\n -0.03721611395801, 0.01818801111503, -0.00749618797172],\n [0.53648789255105, -0.25049871956020, -0.42163034350696,\n -0.43193942311114, -0.00275953611929, -0.03424681017675,\n 0.04267842219415, -0.04678328784242, -0.10214864179676,\n 0.26408300200955, 0.14590772289388, 0.15113130533216,\n -0.02459864859345, -0.17556493366449, -0.11202315195388,\n -0.18823009262115, -0.04060034127000, 0.05477720428674,\n 0.04788665548180, 0.04704409688120, -0.02217936801134]];\n\n var ABButter = [\n [0.98621192462708, -1.97223372919527, -1.97242384925416,\n 0.97261396931306, 0.98621192462708],\n [0.98500175787242, -1.96977855582618, -1.97000351574484,\n 0.97022847566350, 0.98500175787242],\n [0.97938932735214, -1.95835380975398, -1.95877865470428,\n 0.95920349965459, 0.97938932735214],\n [0.97531843204928, -1.95002759149878, -1.95063686409857,\n 0.95124613669835, 0.97531843204928],\n [0.97316523498161, -1.94561023566527, -1.94633046996323,\n 0.94705070426118, 0.97316523498161],\n [0.96454515552826, -1.92783286977036, -1.92909031105652,\n 0.93034775234268, 0.96454515552826],\n [0.96009142950541, -1.91858953033784, -1.92018285901082,\n 0.92177618768381, 0.96009142950541],\n [0.95856916599601, -1.91542108074780, -1.91713833199203,\n 0.91885558323625, 0.95856916599601],\n [0.94597685600279, -1.88903307939452, -1.89195371200558,\n 0.89487434461664, 0.94597685600279]];\n\n\n /**\n * When calling this procedure, make sure that ip[-order] and op[-order]\n * point to real data\n */\n //private void filterYule(final float[] input, int inputPos, float[] output,\n //int outputPos, int nSamples, final float[] kernel) {\n function filterYule(input, inputPos, output, outputPos, nSamples, kernel) {\n\n while ((nSamples--) != 0) {\n /* 1e-10 is a hack to avoid slowdown because of denormals */\n output[outputPos] = 1e-10 + input[inputPos + 0] * kernel[0]\n - output[outputPos - 1] * kernel[1] + input[inputPos - 1]\n * kernel[2] - output[outputPos - 2] * kernel[3]\n + input[inputPos - 2] * kernel[4] - output[outputPos - 3]\n * kernel[5] + input[inputPos - 3] * kernel[6]\n - output[outputPos - 4] * kernel[7] + input[inputPos - 4]\n * kernel[8] - output[outputPos - 5] * kernel[9]\n + input[inputPos - 5] * kernel[10] - output[outputPos - 6]\n * kernel[11] + input[inputPos - 6] * kernel[12]\n - output[outputPos - 7] * kernel[13] + input[inputPos - 7]\n * kernel[14] - output[outputPos - 8] * kernel[15]\n + input[inputPos - 8] * kernel[16] - output[outputPos - 9]\n * kernel[17] + input[inputPos - 9] * kernel[18]\n - output[outputPos - 10] * kernel[19]\n + input[inputPos - 10] * kernel[20];\n ++outputPos;\n ++inputPos;\n }\n }\n\n//private void filterButter(final float[] input, int inputPos,\n// float[] output, int outputPos, int nSamples, final float[] kernel) {\n function filterButter(input, inputPos, output, outputPos, nSamples, kernel) {\n\n while ((nSamples--) != 0) {\n output[outputPos] = input[inputPos + 0] * kernel[0]\n - output[outputPos - 1] * kernel[1] + input[inputPos - 1]\n * kernel[2] - output[outputPos - 2] * kernel[3]\n + input[inputPos - 2] * kernel[4];\n ++outputPos;\n ++inputPos;\n }\n }\n\n /**\n * @return INIT_GAIN_ANALYSIS_OK if successful, INIT_GAIN_ANALYSIS_ERROR if\n * not\n */\n function ResetSampleFrequency(rgData, samplefreq) {\n /* zero out initial values */\n for (var i = 0; i < MAX_ORDER; i++)\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0.;\n\n switch (0 | (samplefreq)) {\n case 48000:\n rgData.reqindex = 0;\n break;\n case 44100:\n rgData.reqindex = 1;\n break;\n case 32000:\n rgData.reqindex = 2;\n break;\n case 24000:\n rgData.reqindex = 3;\n break;\n case 22050:\n rgData.reqindex = 4;\n break;\n case 16000:\n rgData.reqindex = 5;\n break;\n case 12000:\n rgData.reqindex = 6;\n break;\n case 11025:\n rgData.reqindex = 7;\n break;\n case 8000:\n rgData.reqindex = 8;\n break;\n default:\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n\n rgData.sampleWindow = 0 | ((samplefreq * RMS_WINDOW_TIME_NUMERATOR\n + RMS_WINDOW_TIME_DENOMINATOR - 1) / RMS_WINDOW_TIME_DENOMINATOR);\n\n rgData.lsum = 0.;\n rgData.rsum = 0.;\n rgData.totsamp = 0;\n\n Arrays$15.ill(rgData.A, 0);\n\n return INIT_GAIN_ANALYSIS_OK;\n }\n\n this.InitGainAnalysis = function (rgData, samplefreq) {\n if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) {\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n\n rgData.linpre = MAX_ORDER;\n rgData.rinpre = MAX_ORDER;\n rgData.lstep = MAX_ORDER;\n rgData.rstep = MAX_ORDER;\n rgData.lout = MAX_ORDER;\n rgData.rout = MAX_ORDER;\n\n Arrays$15.fill(rgData.B, 0);\n\n return INIT_GAIN_ANALYSIS_OK;\n };\n\n /**\n * square\n */\n function fsqr(d) {\n return d * d;\n }\n\n this.AnalyzeSamples = function (rgData, left_samples, left_samplesPos, right_samples, right_samplesPos, num_samples,\n num_channels) {\n var curleft;\n var curleftBase;\n var curright;\n var currightBase;\n var batchsamples;\n var cursamples;\n var cursamplepos;\n\n if (num_samples == 0)\n return GAIN_ANALYSIS_OK;\n\n cursamplepos = 0;\n batchsamples = num_samples;\n\n switch (num_channels) {\n case 1:\n right_samples = left_samples;\n right_samplesPos = left_samplesPos;\n break;\n case 2:\n break;\n default:\n return GAIN_ANALYSIS_ERROR;\n }\n\n if (num_samples < MAX_ORDER) {\n System$15.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER, num_samples);\n System$15.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER, num_samples);\n } else {\n System$15.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER, MAX_ORDER);\n System$15.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER, MAX_ORDER);\n }\n\n while (batchsamples > 0) {\n cursamples = batchsamples > rgData.sampleWindow - rgData.totsamp ? rgData.sampleWindow\n - rgData.totsamp\n : batchsamples;\n if (cursamplepos < MAX_ORDER) {\n curleft = rgData.linpre + cursamplepos;\n curleftBase = rgData.linprebuf;\n curright = rgData.rinpre + cursamplepos;\n currightBase = rgData.rinprebuf;\n if (cursamples > MAX_ORDER - cursamplepos)\n cursamples = MAX_ORDER - cursamplepos;\n } else {\n curleft = left_samplesPos + cursamplepos;\n curleftBase = left_samples;\n curright = right_samplesPos + cursamplepos;\n currightBase = right_samples;\n }\n\n filterYule(curleftBase, curleft, rgData.lstepbuf, rgData.lstep\n + rgData.totsamp, cursamples, ABYule[rgData.reqindex]);\n filterYule(currightBase, curright, rgData.rstepbuf, rgData.rstep\n + rgData.totsamp, cursamples, ABYule[rgData.reqindex]);\n\n filterButter(rgData.lstepbuf, rgData.lstep + rgData.totsamp,\n rgData.loutbuf, rgData.lout + rgData.totsamp, cursamples,\n ABButter[rgData.reqindex]);\n filterButter(rgData.rstepbuf, rgData.rstep + rgData.totsamp,\n rgData.routbuf, rgData.rout + rgData.totsamp, cursamples,\n ABButter[rgData.reqindex]);\n\n curleft = rgData.lout + rgData.totsamp;\n /* Get the squared values */\n curleftBase = rgData.loutbuf;\n curright = rgData.rout + rgData.totsamp;\n currightBase = rgData.routbuf;\n\n var i = cursamples % 8;\n while ((i--) != 0) {\n rgData.lsum += fsqr(curleftBase[curleft++]);\n rgData.rsum += fsqr(currightBase[curright++]);\n }\n i = cursamples / 8;\n while ((i--) != 0) {\n rgData.lsum += fsqr(curleftBase[curleft + 0])\n + fsqr(curleftBase[curleft + 1])\n + fsqr(curleftBase[curleft + 2])\n + fsqr(curleftBase[curleft + 3])\n + fsqr(curleftBase[curleft + 4])\n + fsqr(curleftBase[curleft + 5])\n + fsqr(curleftBase[curleft + 6])\n + fsqr(curleftBase[curleft + 7]);\n curleft += 8;\n rgData.rsum += fsqr(currightBase[curright + 0])\n + fsqr(currightBase[curright + 1])\n + fsqr(currightBase[curright + 2])\n + fsqr(currightBase[curright + 3])\n + fsqr(currightBase[curright + 4])\n + fsqr(currightBase[curright + 5])\n + fsqr(currightBase[curright + 6])\n + fsqr(currightBase[curright + 7]);\n curright += 8;\n }\n\n batchsamples -= cursamples;\n cursamplepos += cursamples;\n rgData.totsamp += cursamples;\n if (rgData.totsamp == rgData.sampleWindow) {\n /* Get the Root Mean Square (RMS) for this set of samples */\n var val = GainAnalysis$1.STEPS_per_dB\n * 10.\n * Math.log10((rgData.lsum + rgData.rsum)\n / rgData.totsamp * 0.5 + 1.e-37);\n var ival = (val <= 0) ? 0 : 0 | val;\n if (ival >= rgData.A.length)\n ival = rgData.A.length - 1;\n rgData.A[ival]++;\n rgData.lsum = rgData.rsum = 0.;\n\n System$15.arraycopy(rgData.loutbuf, rgData.totsamp,\n rgData.loutbuf, 0, MAX_ORDER);\n System$15.arraycopy(rgData.routbuf, rgData.totsamp,\n rgData.routbuf, 0, MAX_ORDER);\n System$15.arraycopy(rgData.lstepbuf, rgData.totsamp,\n rgData.lstepbuf, 0, MAX_ORDER);\n System$15.arraycopy(rgData.rstepbuf, rgData.totsamp,\n rgData.rstepbuf, 0, MAX_ORDER);\n rgData.totsamp = 0;\n }\n if (rgData.totsamp > rgData.sampleWindow) {\n /*\n * somehow I really screwed up: Error in programming! Contact\n * author about totsamp > sampleWindow\n */\n return GAIN_ANALYSIS_ERROR;\n }\n }\n if (num_samples < MAX_ORDER) {\n System$15.arraycopy(rgData.linprebuf, num_samples, rgData.linprebuf,\n 0, MAX_ORDER - num_samples);\n System$15.arraycopy(rgData.rinprebuf, num_samples, rgData.rinprebuf,\n 0, MAX_ORDER - num_samples);\n System$15.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER - num_samples, num_samples);\n System$15.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER - num_samples, num_samples);\n } else {\n System$15.arraycopy(left_samples, left_samplesPos + num_samples\n - MAX_ORDER, rgData.linprebuf, 0, MAX_ORDER);\n System$15.arraycopy(right_samples, right_samplesPos + num_samples\n - MAX_ORDER, rgData.rinprebuf, 0, MAX_ORDER);\n }\n\n return GAIN_ANALYSIS_OK;\n };\n\n function analyzeResult(Array, len) {\n var i;\n\n var elems = 0;\n for (i = 0; i < len; i++)\n elems += Array[i];\n if (elems == 0)\n return GAIN_NOT_ENOUGH_SAMPLES;\n\n var upper = 0 | Math.ceil(elems * (1. - RMS_PERCENTILE));\n for (i = len; i-- > 0;) {\n if ((upper -= Array[i]) <= 0)\n break;\n }\n\n //return (float) ((float) PINK_REF - (float) i / (float) STEPS_per_dB);\n return (PINK_REF - i / GainAnalysis$1.STEPS_per_dB);\n }\n\n this.GetTitleGain = function (rgData) {\n var retval = analyzeResult(rgData.A, rgData.A.length);\n\n for (var i = 0; i < rgData.A.length; i++) {\n rgData.B[i] += rgData.A[i];\n rgData.A[i] = 0;\n }\n\n for (var i = 0; i < MAX_ORDER; i++)\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0.;\n\n rgData.totsamp = 0;\n rgData.lsum = rgData.rsum = 0.;\n return retval;\n };\n\n}\n\nvar GainAnalysis_1 = GainAnalysis$1;\n\nvar new_float$14 = common.new_float;\nvar new_int$14 = common.new_int;\nfunction ReplayGain() {\n this.linprebuf = new_float$14(GainAnalysis_1.MAX_ORDER * 2);\n /**\n * left input samples, with pre-buffer\n */\n this.linpre = 0;\n this.lstepbuf = new_float$14(GainAnalysis_1.MAX_SAMPLES_PER_WINDOW + GainAnalysis_1.MAX_ORDER);\n /**\n * left \"first step\" (i.e. post first filter) samples\n */\n this.lstep = 0;\n this.loutbuf = new_float$14(GainAnalysis_1.MAX_SAMPLES_PER_WINDOW + GainAnalysis_1.MAX_ORDER);\n /**\n * left \"out\" (i.e. post second filter) samples\n */\n this.lout = 0;\n this.rinprebuf = new_float$14(GainAnalysis_1.MAX_ORDER * 2);\n /**\n * right input samples ...\n */\n this.rinpre = 0;\n this.rstepbuf = new_float$14(GainAnalysis_1.MAX_SAMPLES_PER_WINDOW + GainAnalysis_1.MAX_ORDER);\n this.rstep = 0;\n this.routbuf = new_float$14(GainAnalysis_1.MAX_SAMPLES_PER_WINDOW + GainAnalysis_1.MAX_ORDER);\n this.rout = 0;\n /**\n * number of samples required to reach number of milliseconds required\n * for RMS window\n */\n this.sampleWindow = 0;\n this.totsamp = 0;\n this.lsum = 0.;\n this.rsum = 0.;\n this.freqindex = 0;\n this.first = 0;\n this.A = new_int$14(0 | (GainAnalysis_1.STEPS_per_dB * GainAnalysis_1.MAX_dB));\n this.B = new_int$14(0 | (GainAnalysis_1.STEPS_per_dB * GainAnalysis_1.MAX_dB));\n\n}\n\nvar ReplayGain_1 = ReplayGain;\n\nfunction MeanBits$1(meanBits) {\n this.bits = meanBits;\n}\n\nvar MeanBits_1 = MeanBits$1;\n\nvar new_float$16 = common.new_float;\nvar new_int$16 = common.new_int;\nvar assert$16 = common.assert;\n\n\n\n\n\n\nfunction CBRNewIterationLoop(_quantize) {\n var quantize = _quantize;\n this.quantize = quantize;\n\tthis.iteration_loop = function(gfp, pe, ms_ener_ratio, ratio) {\n\t\tvar gfc = gfp.internal_flags;\n var l3_xmin = new_float$16(L3Side_1.SFBMAX);\n\t\tvar xrpow = new_float$16(576);\n\t\tvar targ_bits = new_int$16(2);\n\t\tvar mean_bits = 0, max_bits;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tvar mb = new MeanBits_1(mean_bits);\n\t\tthis.quantize.rv.ResvFrameBegin(gfp, mb);\n\t\tmean_bits = mb.bits;\n\n\t\t/* quantize! */\n\t\tfor (var gr = 0; gr < gfc.mode_gr; gr++) {\n\n\t\t\t/*\n\t\t\t * calculate needed bits\n\t\t\t */\n\t\t\tmax_bits = this.quantize.qupvt.on_pe(gfp, pe, targ_bits, mean_bits,\n\t\t\t\t\tgr, gr);\n\n\t\t\tif (gfc.mode_ext == Encoder_1.MPG_MD_MS_LR) {\n\t\t\t\tthis.quantize.ms_convert(gfc.l3_side, gr);\n\t\t\t\tthis.quantize.qupvt.reduce_side(targ_bits, ms_ener_ratio[gr],\n\t\t\t\t\t\tmean_bits, max_bits);\n\t\t\t}\n\n\t\t\tfor (var ch = 0; ch < gfc.channels_out; ch++) {\n\t\t\t\tvar adjust, masking_lower_db;\n\t\t\t\tvar cod_info = l3_side.tt[gr][ch];\n\n\t\t\t\tif (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n\t\t\t\t\t// NORM, START or STOP type\n\t\t\t\t\tadjust = 0;\n\t\t\t\t\tmasking_lower_db = gfc.PSY.mask_adjust - adjust;\n\t\t\t\t} else {\n\t\t\t\t\tadjust = 0;\n\t\t\t\t\tmasking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n\t\t\t\t}\n\t\t\t\tgfc.masking_lower = Math.pow(10.0,\n\t\t\t\t\t\tmasking_lower_db * 0.1);\n\n\t\t\t\t/*\n\t\t\t\t * init_outer_loop sets up cod_info, scalefac and xrpow\n\t\t\t\t */\n\t\t\t\tthis.quantize.init_outer_loop(gfc, cod_info);\n\t\t\t\tif (this.quantize.init_xrpow(gfc, cod_info, xrpow)) {\n\t\t\t\t\t/*\n\t\t\t\t\t * xr contains energy we will have to encode calculate the\n\t\t\t\t\t * masking abilities find some good quantization in\n\t\t\t\t\t * outer_loop\n\t\t\t\t\t */\n\t\t\t\t\tthis.quantize.qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n\t\t\t\t\t\t\tl3_xmin);\n\t\t\t\t\tthis.quantize.outer_loop(gfp, cod_info, l3_xmin, xrpow, ch,\n\t\t\t\t\t\t\ttarg_bits[ch]);\n\t\t\t\t}\n\n\t\t\t\tthis.quantize.iteration_finish_one(gfc, gr, ch);\n\t\t\t\tassert$16 (cod_info.part2_3_length <= LameInternalFlags_1.MAX_BITS_PER_CHANNEL);\n\t\t\t\tassert$16 (cod_info.part2_3_length <= targ_bits[ch]);\n\t\t\t} /* for ch */\n\t\t} /* for gr */\n\n\t\tthis.quantize.rv.ResvFrameEnd(gfc, mean_bits);\n\t};\n}\nvar CBRNewIterationLoop_1 = CBRNewIterationLoop;\n\nfunction HuffCodeTab(len, max, tab, hl) {\n this.xlen = len;\n this.linmax = max;\n this.table = tab;\n this.hlen = hl;\n}\n\nvar Tables$1 = {};\n\n\nTables$1.t1HB = [\n 1, 1,\n 1, 0\n];\n\nTables$1.t2HB = [\n 1, 2, 1,\n 3, 1, 1,\n 3, 2, 0\n];\n\nTables$1.t3HB = [\n 3, 2, 1,\n 1, 1, 1,\n 3, 2, 0\n];\n\nTables$1.t5HB = [\n 1, 2, 6, 5,\n 3, 1, 4, 4,\n 7, 5, 7, 1,\n 6, 1, 1, 0\n];\n\nTables$1.t6HB = [\n 7, 3, 5, 1,\n 6, 2, 3, 2,\n 5, 4, 4, 1,\n 3, 3, 2, 0\n];\n\nTables$1.t7HB = [\n 1, 2, 10, 19, 16, 10,\n 3, 3, 7, 10, 5, 3,\n 11, 4, 13, 17, 8, 4,\n 12, 11, 18, 15, 11, 2,\n 7, 6, 9, 14, 3, 1,\n 6, 4, 5, 3, 2, 0\n];\n\nTables$1.t8HB = [\n 3, 4, 6, 18, 12, 5,\n 5, 1, 2, 16, 9, 3,\n 7, 3, 5, 14, 7, 3,\n 19, 17, 15, 13, 10, 4,\n 13, 5, 8, 11, 5, 1,\n 12, 4, 4, 1, 1, 0\n];\n\nTables$1.t9HB = [\n 7, 5, 9, 14, 15, 7,\n 6, 4, 5, 5, 6, 7,\n 7, 6, 8, 8, 8, 5,\n 15, 6, 9, 10, 5, 1,\n 11, 7, 9, 6, 4, 1,\n 14, 4, 6, 2, 6, 0\n];\n\nTables$1.t10HB = [\n 1, 2, 10, 23, 35, 30, 12, 17,\n 3, 3, 8, 12, 18, 21, 12, 7,\n 11, 9, 15, 21, 32, 40, 19, 6,\n 14, 13, 22, 34, 46, 23, 18, 7,\n 20, 19, 33, 47, 27, 22, 9, 3,\n 31, 22, 41, 26, 21, 20, 5, 3,\n 14, 13, 10, 11, 16, 6, 5, 1,\n 9, 8, 7, 8, 4, 4, 2, 0\n];\n\nTables$1.t11HB = [\n 3, 4, 10, 24, 34, 33, 21, 15,\n 5, 3, 4, 10, 32, 17, 11, 10,\n 11, 7, 13, 18, 30, 31, 20, 5,\n 25, 11, 19, 59, 27, 18, 12, 5,\n 35, 33, 31, 58, 30, 16, 7, 5,\n 28, 26, 32, 19, 17, 15, 8, 14,\n 14, 12, 9, 13, 14, 9, 4, 1,\n 11, 4, 6, 6, 6, 3, 2, 0\n];\n\nTables$1.t12HB = [\n 9, 6, 16, 33, 41, 39, 38, 26,\n 7, 5, 6, 9, 23, 16, 26, 11,\n 17, 7, 11, 14, 21, 30, 10, 7,\n 17, 10, 15, 12, 18, 28, 14, 5,\n 32, 13, 22, 19, 18, 16, 9, 5,\n 40, 17, 31, 29, 17, 13, 4, 2,\n 27, 12, 11, 15, 10, 7, 4, 1,\n 27, 12, 8, 12, 6, 3, 1, 0\n];\n\nTables$1.t13HB = [\n 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19,\n 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14,\n 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16,\n 22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14,\n 35, 16, 60, 57, 97, 75, 114, 91, 54, 73, 55, 41, 48, 53, 23, 24,\n 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17,\n 47, 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15,\n 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42,\n 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16,\n 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11,\n 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22,\n 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7,\n 34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5,\n 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3,\n 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2,\n 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1\n];\n\nTables$1.t15HB = [\n 7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63,\n 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36,\n 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33,\n 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29,\n 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27,\n 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,\n 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30,\n 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25,\n 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,\n 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15,\n 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9,\n 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,\n 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7,\n 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3,\n 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1,\n 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0\n];\n\nTables$1.t16HB = [\n 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17,\n 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9,\n 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16,\n 45, 21, 39, 69, 64, 114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26,\n 75, 36, 68, 65, 115, 101, 179, 164, 155, 264, 246, 226, 395, 382, 362, 9,\n 66, 30, 59, 56, 102, 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16,\n 111, 54, 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10,\n 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372, 380, 889, 884, 8,\n 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383, 727, 713, 708, 7,\n 154, 76, 73, 141, 131, 256, 245, 426, 406, 394, 384, 735, 359, 710, 352, 11,\n 139, 129, 67, 125, 247, 233, 229, 219, 393, 743, 737, 720, 885, 882, 439, 4,\n 243, 120, 118, 115, 227, 223, 396, 746, 742, 736, 721, 712, 706, 223, 436, 6,\n 202, 224, 222, 218, 216, 389, 386, 381, 364, 888, 443, 707, 440, 437, 1728, 4,\n 747, 211, 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2,\n 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870, 434, 0,\n 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3\n];\n\nTables$1.t24HB = [\n 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88,\n 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42,\n 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18,\n 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16,\n 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14,\n 263, 66, 129, 126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12,\n 249, 123, 121, 117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10,\n 435, 115, 111, 109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17,\n 427, 212, 208, 205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16,\n 335, 199, 197, 191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11,\n 668, 184, 183, 179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10,\n 652, 346, 171, 168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6,\n 648, 322, 316, 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4,\n 620, 300, 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2,\n 1033, 280, 278, 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0,\n 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3\n];\n\nTables$1.t32HB = [\n 1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3,\n 7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4\n];\n\nTables$1.t33HB = [\n 15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3,\n 7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4\n];\n\nTables$1.t1l = [\n 1, 4,\n 3, 5\n];\n\nTables$1.t2l = [\n 1, 4, 7,\n 4, 5, 7,\n 6, 7, 8\n];\n\nTables$1.t3l = [\n 2, 3, 7,\n 4, 4, 7,\n 6, 7, 8\n];\n\nTables$1.t5l = [\n 1, 4, 7, 8,\n 4, 5, 8, 9,\n 7, 8, 9, 10,\n 8, 8, 9, 10\n];\n\nTables$1.t6l = [\n 3, 4, 6, 8,\n 4, 4, 6, 7,\n 5, 6, 7, 8,\n 7, 7, 8, 9\n];\n\nTables$1.t7l = [\n 1, 4, 7, 9, 9, 10,\n 4, 6, 8, 9, 9, 10,\n 7, 7, 9, 10, 10, 11,\n 8, 9, 10, 11, 11, 11,\n 8, 9, 10, 11, 11, 12,\n 9, 10, 11, 12, 12, 12\n];\n\nTables$1.t8l = [\n 2, 4, 7, 9, 9, 10,\n 4, 4, 6, 10, 10, 10,\n 7, 6, 8, 10, 10, 11,\n 9, 10, 10, 11, 11, 12,\n 9, 9, 10, 11, 12, 12,\n 10, 10, 11, 11, 13, 13\n];\n\nTables$1.t9l = [\n 3, 4, 6, 7, 9, 10,\n 4, 5, 6, 7, 8, 10,\n 5, 6, 7, 8, 9, 10,\n 7, 7, 8, 9, 9, 10,\n 8, 8, 9, 9, 10, 11,\n 9, 9, 10, 10, 11, 11\n];\n\nTables$1.t10l = [\n 1, 4, 7, 9, 10, 10, 10, 11,\n 4, 6, 8, 9, 10, 11, 10, 10,\n 7, 8, 9, 10, 11, 12, 11, 11,\n 8, 9, 10, 11, 12, 12, 11, 12,\n 9, 10, 11, 12, 12, 12, 12, 12,\n 10, 11, 12, 12, 13, 13, 12, 13,\n 9, 10, 11, 12, 12, 12, 13, 13,\n 10, 10, 11, 12, 12, 13, 13, 13\n];\n\nTables$1.t11l = [\n 2, 4, 6, 8, 9, 10, 9, 10,\n 4, 5, 6, 8, 10, 10, 9, 10,\n 6, 7, 8, 9, 10, 11, 10, 10,\n 8, 8, 9, 11, 10, 12, 10, 11,\n 9, 10, 10, 11, 11, 12, 11, 12,\n 9, 10, 11, 12, 12, 13, 12, 13,\n 9, 9, 9, 10, 11, 12, 12, 12,\n 9, 9, 10, 11, 12, 12, 12, 12\n];\n\nTables$1.t12l = [\n 4, 4, 6, 8, 9, 10, 10, 10,\n 4, 5, 6, 7, 9, 9, 10, 10,\n 6, 6, 7, 8, 9, 10, 9, 10,\n 7, 7, 8, 8, 9, 10, 10, 10,\n 8, 8, 9, 9, 10, 10, 10, 11,\n 9, 9, 10, 10, 10, 11, 10, 11,\n 9, 9, 9, 10, 10, 11, 11, 12,\n 10, 10, 10, 11, 11, 11, 11, 12\n];\n\nTables$1.t13l = [\n 1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14,\n 4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14,\n 7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15,\n 8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15,\n 9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16,\n 10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16,\n 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16,\n 11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18,\n 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17,\n 11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17,\n 11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19,\n 12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18,\n 12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18,\n 13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18,\n 14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18,\n 13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18\n];\n\nTables$1.t15l = [\n 3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14,\n 5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13,\n 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13,\n 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13,\n 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13,\n 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14,\n 10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14,\n 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14,\n 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14,\n 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,\n 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14,\n 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15,\n 12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15,\n 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15,\n 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15,\n 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15\n];\n\nTables$1.t16_5l = [\n 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11,\n 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11,\n 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12,\n 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13,\n 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12,\n 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13,\n 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13,\n 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13,\n 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13,\n 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14,\n 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13,\n 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14,\n 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14,\n 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14,\n 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14,\n 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12\n];\n\nTables$1.t16l = [\n 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10,\n 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10,\n 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11,\n 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12,\n 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11,\n 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12,\n 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12,\n 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12,\n 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12,\n 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13,\n 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12,\n 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13,\n 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13,\n 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13,\n 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13,\n 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10\n];\n\nTables$1.t24l = [\n 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10,\n 5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10,\n 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9,\n 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9,\n 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9,\n 10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9,\n 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9,\n 11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10,\n 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10,\n 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10,\n 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,\n 12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10,\n 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10,\n 13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10,\n 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6\n];\n\nTables$1.t32l = [\n 1 + 0, 4 + 1, 4 + 1, 5 + 2, 4 + 1, 6 + 2, 5 + 2, 6 + 3,\n 4 + 1, 5 + 2, 5 + 2, 6 + 3, 5 + 2, 6 + 3, 6 + 3, 6 + 4\n];\n\nTables$1.t33l = [\n 4 + 0, 4 + 1, 4 + 1, 4 + 2, 4 + 1, 4 + 2, 4 + 2, 4 + 3,\n 4 + 1, 4 + 2, 4 + 2, 4 + 3, 4 + 2, 4 + 3, 4 + 3, 4 + 4\n];\n\nTables$1.ht = [\n /* xlen, linmax, table, hlen */\n new HuffCodeTab(0, 0, null, null),\n new HuffCodeTab(2, 0, Tables$1.t1HB, Tables$1.t1l),\n new HuffCodeTab(3, 0, Tables$1.t2HB, Tables$1.t2l),\n new HuffCodeTab(3, 0, Tables$1.t3HB, Tables$1.t3l),\n new HuffCodeTab(0, 0, null, null), /* Apparently not used */\n new HuffCodeTab(4, 0, Tables$1.t5HB, Tables$1.t5l),\n new HuffCodeTab(4, 0, Tables$1.t6HB, Tables$1.t6l),\n new HuffCodeTab(6, 0, Tables$1.t7HB, Tables$1.t7l),\n new HuffCodeTab(6, 0, Tables$1.t8HB, Tables$1.t8l),\n new HuffCodeTab(6, 0, Tables$1.t9HB, Tables$1.t9l),\n new HuffCodeTab(8, 0, Tables$1.t10HB, Tables$1.t10l),\n new HuffCodeTab(8, 0, Tables$1.t11HB, Tables$1.t11l),\n new HuffCodeTab(8, 0, Tables$1.t12HB, Tables$1.t12l),\n new HuffCodeTab(16, 0, Tables$1.t13HB, Tables$1.t13l),\n new HuffCodeTab(0, 0, null, Tables$1.t16_5l), /* Apparently not used */\n new HuffCodeTab(16, 0, Tables$1.t15HB, Tables$1.t15l),\n\n new HuffCodeTab(1, 1, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(2, 3, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(3, 7, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(4, 15, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(6, 63, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(8, 255, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(10, 1023, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(13, 8191, Tables$1.t16HB, Tables$1.t16l),\n\n new HuffCodeTab(4, 15, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(5, 31, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(6, 63, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(7, 127, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(8, 255, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(9, 511, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(11, 2047, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(13, 8191, Tables$1.t24HB, Tables$1.t24l),\n\n new HuffCodeTab(0, 0, Tables$1.t32HB, Tables$1.t32l),\n new HuffCodeTab(0, 0, Tables$1.t33HB, Tables$1.t33l),\n];\n\n/**\n * \n * for (i = 0; i < 16*16; i++) [\n * largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i];\n * ]\n * \n *\n */\nTables$1.largetbl = [\n 0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b,\n 0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a,\n 0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b,\n 0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a,\n 0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b,\n 0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009,\n 0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b,\n 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009,\n 0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b,\n 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009,\n 0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b,\n 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009,\n 0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b,\n 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009,\n 0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b,\n 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a,\n 0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b,\n 0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a,\n 0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c,\n 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a,\n 0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c,\n 0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a,\n 0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c,\n 0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a,\n 0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c,\n 0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a,\n 0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c,\n 0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a,\n 0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d,\n 0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a,\n 0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009,\n 0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006\n];\n/**\n * \n * for (i = 0; i < 3*3; i++) [\n * table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i];\n * ]\n * \n *\n */\nTables$1.table23 = [\n 0x010002, 0x040003, 0x070007,\n 0x040004, 0x050004, 0x070007,\n 0x060006, 0x070007, 0x080008\n];\n\n/**\n * \n * for (i = 0; i < 4*4; i++) [\n * table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i];\n * ]\n * \n *\n */\nTables$1.table56 = [\n 0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007,\n 0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009\n];\n\nTables$1.bitrate_table = [\n [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1], /* MPEG 2 */\n [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1], /* MPEG 1 */\n [0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1], /* MPEG 2.5 */\n];\n\n/**\n * MPEG 2, MPEG 1, MPEG 2.5.\n */\nTables$1.samplerate_table = [\n [22050, 24000, 16000, -1],\n [44100, 48000, 32000, -1],\n [11025, 12000, 8000, -1],\n];\n\n/**\n * This is the scfsi_band table from 2.4.2.7 of the IS.\n */\nTables$1.scfsi_band = [0, 6, 11, 16, 21];\n\nvar Tables_1 = Tables$1;\n\nvar VbrMode$19 = common.VbrMode;\nvar Float$19 = common.Float;\nvar Util$19 = common.Util;\nvar new_float$19 = common.new_float;\nvar new_int$19 = common.new_int;\nvar assert$19 = common.assert;\n\n\n\n\n\nQuantizePVT$1.Q_MAX = (256 + 1);\nQuantizePVT$1.Q_MAX2 = 116;\nQuantizePVT$1.LARGE_BITS = 100000;\nQuantizePVT$1.IXMAX_VAL = 8206;\n\nfunction QuantizePVT$1() {\n\n var tak = null;\n var rv = null;\n var psy = null;\n\n this.setModules = function (_tk, _rv, _psy) {\n tak = _tk;\n rv = _rv;\n psy = _psy;\n };\n\n function POW20(x) {\n assert$19(0 <= (x + QuantizePVT$1.Q_MAX2) && x < QuantizePVT$1.Q_MAX);\n return pow20[x + QuantizePVT$1.Q_MAX2];\n }\n\n this.IPOW20 = function (x) {\n assert$19(0 <= x && x < QuantizePVT$1.Q_MAX);\n return ipow20[x];\n };\n\n /**\n * smallest such that 1.0+DBL_EPSILON != 1.0\n */\n var DBL_EPSILON = 2.2204460492503131e-016;\n\n /**\n * ix always <= 8191+15. see count_bits()\n */\n var IXMAX_VAL = QuantizePVT$1.IXMAX_VAL;\n\n var PRECALC_SIZE = (IXMAX_VAL + 2);\n\n var Q_MAX = QuantizePVT$1.Q_MAX;\n\n\n /**\n * \n * minimum possible number of\n * -cod_info.global_gain + ((scalefac[] + (cod_info.preflag ? pretab[sfb] : 0))\n * << (cod_info.scalefac_scale + 1)) + cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n *\n * for long block, 0+((15+3)<<2) = 18*4 = 72\n * for short block, 0+(15<<2)+7*8 = 15*4+56 = 116\n * \n */\n var Q_MAX2 = QuantizePVT$1.Q_MAX2;\n\n var LARGE_BITS = QuantizePVT$1.LARGE_BITS;\n\n\n /**\n * Assuming dynamic range=96dB, this value should be 92\n */\n var NSATHSCALE = 100;\n\n /**\n * The following table is used to implement the scalefactor partitioning for\n * MPEG2 as described in section 2.4.3.2 of the IS. The indexing corresponds\n * to the way the tables are presented in the IS:\n *\n * [table_number][row_in_table][column of nr_of_sfb]\n */\n this.nr_of_sfb_block = [\n [[6, 5, 5, 5], [9, 9, 9, 9], [6, 9, 9, 9]],\n [[6, 5, 7, 3], [9, 9, 12, 6], [6, 9, 12, 6]],\n [[11, 10, 0, 0], [18, 18, 0, 0], [15, 18, 0, 0]],\n [[7, 7, 7, 0], [12, 12, 12, 0], [6, 15, 12, 0]],\n [[6, 6, 6, 3], [12, 9, 9, 6], [6, 12, 9, 6]],\n [[8, 8, 5, 0], [15, 12, 9, 0], [6, 18, 9, 0]]];\n\n /**\n * Table B.6: layer3 preemphasis\n */\n var pretab = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n 2, 2, 3, 3, 3, 2, 0];\n this.pretab = pretab;\n\n /**\n * Here are MPEG1 Table B.8 and MPEG2 Table B.1 -- Layer III scalefactor\n * bands.
\n * Index into this using a method such as:
\n * idx = fr_ps.header.sampling_frequency + (fr_ps.header.version * 3)\n */\n this.sfBandIndex = [\n // Table B.2.b: 22.05 kHz\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192]\n , [0, 0, 0, 0, 0, 0, 0] // sfb21 pseudo sub bands\n , [0, 0, 0, 0, 0, 0, 0] // sfb12 pseudo sub bands\n ),\n /* Table B.2.c: 24 kHz */ /* docs: 332. mpg123(broken): 330 */\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 332, 394, 464,\n 540, 576],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.2.a: 16 kHz */\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.b: 44.1 kHz */\n new ScaleFac_1([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418,\n 576],\n [0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.c: 48 kHz */\n new ScaleFac_1([0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384,\n 576],\n [0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.a: 32 kHz */\n new ScaleFac_1([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550,\n 576],\n [0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 11.025 kHz */\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3,\n 402 / 3, 522 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 12 kHz */\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3,\n 402 / 3, 522 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 8 kHz */\n new ScaleFac_1([0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232, 280, 336, 400, 476, 566, 568, 570,\n 572, 574, 576],\n [0 / 3, 24 / 3, 48 / 3, 72 / 3, 108 / 3, 156 / 3, 216 / 3, 288 / 3, 372 / 3, 480 / 3, 486 / 3,\n 492 / 3, 498 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n )\n ];\n\n var pow20 = new_float$19(Q_MAX + Q_MAX2 + 1);\n var ipow20 = new_float$19(Q_MAX);\n var pow43 = new_float$19(PRECALC_SIZE);\n\n var adj43 = new_float$19(PRECALC_SIZE);\n this.adj43 = adj43;\n\n /**\n *
\n     * compute the ATH for each scalefactor band cd range: 0..96db\n     *\n     * Input: 3.3kHz signal 32767 amplitude (3.3kHz is where ATH is smallest =\n     * -5db) longblocks: sfb=12 en0/bw=-11db max_en0 = 1.3db shortblocks: sfb=5\n     * -9db 0db\n     *\n     * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) longblocks: amp=1\n     * sfb=12 en0/bw=-103 db max_en0 = -92db amp=32767 sfb=12 -12 db -1.4db\n     *\n     * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) shortblocks: amp=1\n     * sfb=5 en0/bw= -99 -86 amp=32767 sfb=5 -9 db 4db\n     *\n     *\n     * MAX energy of largest wave at 3.3kHz = 1db AVE energy of largest wave at\n     * 3.3kHz = -11db Let's take AVE: -11db = maximum signal in sfb=12. Dynamic\n     * range of CD: 96db. Therefor energy of smallest audible wave in sfb=12 =\n     * -11 - 96 = -107db = ATH at 3.3kHz.\n     *\n     * ATH formula for this wave: -5db. To adjust to LAME scaling, we need ATH =\n     * ATH_formula - 103 (db) ATH = ATH * 2.5e-10 (ener)\n     * 
\n */\n function ATHmdct(gfp, f) {\n var ath = psy.ATHformula(f, gfp);\n\n ath -= NSATHSCALE;\n\n /* modify the MDCT scaling for the ATH and convert to energy */\n ath = Math.pow(10.0, ath / 10.0 + gfp.ATHlower);\n return ath;\n }\n\n function compute_ath(gfp) {\n var ATH_l = gfp.internal_flags.ATH.l;\n var ATH_psfb21 = gfp.internal_flags.ATH.psfb21;\n var ATH_s = gfp.internal_flags.ATH.s;\n var ATH_psfb12 = gfp.internal_flags.ATH.psfb12;\n var gfc = gfp.internal_flags;\n var samp_freq = gfp.out_samplerate;\n\n for (var sfb = 0; sfb < Encoder_1.SBMAX_l; sfb++) {\n var start = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n ATH_l[sfb] = Float$19.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_l[sfb] = Math.min(ATH_l[sfb], ATH_f);\n }\n }\n\n for (var sfb = 0; sfb < Encoder_1.PSFB21; sfb++) {\n var start = gfc.scalefac_band.psfb21[sfb];\n var end = gfc.scalefac_band.psfb21[sfb + 1];\n ATH_psfb21[sfb] = Float$19.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_psfb21[sfb] = Math.min(ATH_psfb21[sfb], ATH_f);\n }\n }\n\n for (var sfb = 0; sfb < Encoder_1.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n ATH_s[sfb] = Float$19.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_s[sfb] = Math.min(ATH_s[sfb], ATH_f);\n }\n ATH_s[sfb] *= (gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb]);\n }\n\n for (var sfb = 0; sfb < Encoder_1.PSFB12; sfb++) {\n var start = gfc.scalefac_band.psfb12[sfb];\n var end = gfc.scalefac_band.psfb12[sfb + 1];\n ATH_psfb12[sfb] = Float$19.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_psfb12[sfb] = Math.min(ATH_psfb12[sfb], ATH_f);\n }\n /* not sure about the following */\n ATH_psfb12[sfb] *= (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]);\n }\n\n /*\n * no-ATH mode: reduce ATH to -200 dB\n */\n if (gfp.noATH) {\n for (var sfb = 0; sfb < Encoder_1.SBMAX_l; sfb++) {\n ATH_l[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder_1.PSFB21; sfb++) {\n ATH_psfb21[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder_1.SBMAX_s; sfb++) {\n ATH_s[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder_1.PSFB12; sfb++) {\n ATH_psfb12[sfb] = 1E-20;\n }\n }\n\n /*\n * work in progress, don't rely on it too much\n */\n gfc.ATH.floor = 10. * Math.log10(ATHmdct(gfp, -1.));\n }\n\n /**\n * initialization for iteration_loop\n */\n this.iteration_init = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var i;\n\n if (gfc.iteration_init_init == 0) {\n gfc.iteration_init_init = 1;\n\n l3_side.main_data_begin = 0;\n compute_ath(gfp);\n\n pow43[0] = 0.0;\n for (i = 1; i < PRECALC_SIZE; i++)\n pow43[i] = Math.pow(i, 4.0 / 3.0);\n\n for (i = 0; i < PRECALC_SIZE - 1; i++)\n adj43[i] = ((i + 1) - Math.pow(\n 0.5 * (pow43[i] + pow43[i + 1]), 0.75));\n adj43[i] = 0.5;\n\n for (i = 0; i < Q_MAX; i++)\n ipow20[i] = Math.pow(2.0, (i - 210) * -0.1875);\n for (i = 0; i <= Q_MAX + Q_MAX2; i++)\n pow20[i] = Math.pow(2.0, (i - 210 - Q_MAX2) * 0.25);\n\n tak.huffman_init(gfc);\n\n {\n var bass, alto, treble, sfb21;\n\n i = (gfp.exp_nspsytune >> 2) & 63;\n if (i >= 32)\n i -= 64;\n bass = Math.pow(10, i / 4.0 / 10.0);\n\n i = (gfp.exp_nspsytune >> 8) & 63;\n if (i >= 32)\n i -= 64;\n alto = Math.pow(10, i / 4.0 / 10.0);\n\n i = (gfp.exp_nspsytune >> 14) & 63;\n if (i >= 32)\n i -= 64;\n treble = Math.pow(10, i / 4.0 / 10.0);\n\n /*\n * to be compatible with Naoki's original code, the next 6 bits\n * define only the amount of changing treble for sfb21\n */\n i = (gfp.exp_nspsytune >> 20) & 63;\n if (i >= 32)\n i -= 64;\n sfb21 = treble * Math.pow(10, i / 4.0 / 10.0);\n for (i = 0; i < Encoder_1.SBMAX_l; i++) {\n var f;\n if (i <= 6)\n f = bass;\n else if (i <= 13)\n f = alto;\n else if (i <= 20)\n f = treble;\n else\n f = sfb21;\n\n gfc.nsPsy.longfact[i] = f;\n }\n for (i = 0; i < Encoder_1.SBMAX_s; i++) {\n var f;\n if (i <= 5)\n f = bass;\n else if (i <= 10)\n f = alto;\n else if (i <= 11)\n f = treble;\n else\n f = sfb21;\n\n gfc.nsPsy.shortfact[i] = f;\n }\n }\n }\n };\n\n /**\n * allocate bits among 2 channels based on PE
\n * mt 6/99
\n * bugfixes rh 8/01: often allocated more than the allowed 4095 bits\n */\n this.on_pe = function (gfp, pe,\n targ_bits, mean_bits, gr, cbr) {\n var gfc = gfp.internal_flags;\n var tbits = 0, bits;\n var add_bits = new_int$19(2);\n var ch;\n\n /* allocate targ_bits for granule */\n var mb = new MeanBits_1(tbits);\n var extra_bits = rv.ResvMaxBits(gfp, mean_bits, mb, cbr);\n tbits = mb.bits;\n /* maximum allowed bits for this granule */\n var max_bits = tbits + extra_bits;\n if (max_bits > LameInternalFlags_1.MAX_BITS_PER_GRANULE) {\n // hard limit per granule\n max_bits = LameInternalFlags_1.MAX_BITS_PER_GRANULE;\n }\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n /******************************************************************\n * allocate bits for each channel\n ******************************************************************/\n targ_bits[ch] = Math.min(LameInternalFlags_1.MAX_BITS_PER_CHANNEL,\n tbits / gfc.channels_out);\n\n add_bits[ch] = 0 | (targ_bits[ch] * pe[gr][ch] / 700.0 - targ_bits[ch]);\n\n /* at most increase bits by 1.5*average */\n if (add_bits[ch] > mean_bits * 3 / 4)\n add_bits[ch] = mean_bits * 3 / 4;\n if (add_bits[ch] < 0)\n add_bits[ch] = 0;\n\n if (add_bits[ch] + targ_bits[ch] > LameInternalFlags_1.MAX_BITS_PER_CHANNEL)\n add_bits[ch] = Math.max(0,\n LameInternalFlags_1.MAX_BITS_PER_CHANNEL - targ_bits[ch]);\n\n bits += add_bits[ch];\n }\n if (bits > extra_bits) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n add_bits[ch] = extra_bits * add_bits[ch] / bits;\n }\n }\n\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] += add_bits[ch];\n extra_bits -= add_bits[ch];\n }\n\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n bits += targ_bits[ch];\n }\n if (bits > LameInternalFlags_1.MAX_BITS_PER_GRANULE) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] *= LameInternalFlags_1.MAX_BITS_PER_GRANULE;\n targ_bits[ch] /= bits;\n sum += targ_bits[ch];\n }\n assert$19(sum <= LameInternalFlags_1.MAX_BITS_PER_GRANULE);\n }\n\n return max_bits;\n };\n\n this.reduce_side = function (targ_bits, ms_ener_ratio, mean_bits, max_bits) {\n assert$19(max_bits <= LameInternalFlags_1.MAX_BITS_PER_GRANULE);\n assert$19(targ_bits[0] + targ_bits[1] <= LameInternalFlags_1.MAX_BITS_PER_GRANULE);\n\n /*\n * ms_ener_ratio = 0: allocate 66/33 mid/side fac=.33 ms_ener_ratio =.5:\n * allocate 50/50 mid/side fac= 0\n */\n /* 75/25 split is fac=.5 */\n var fac = .33 * (.5 - ms_ener_ratio) / .5;\n if (fac < 0)\n fac = 0;\n if (fac > .5)\n fac = .5;\n\n /* number of bits to move from side channel to mid channel */\n /* move_bits = fac*targ_bits[1]; */\n var move_bits = 0 | (fac * .5 * (targ_bits[0] + targ_bits[1]));\n\n if (move_bits > LameInternalFlags_1.MAX_BITS_PER_CHANNEL - targ_bits[0]) {\n move_bits = LameInternalFlags_1.MAX_BITS_PER_CHANNEL - targ_bits[0];\n }\n if (move_bits < 0)\n move_bits = 0;\n\n if (targ_bits[1] >= 125) {\n /* dont reduce side channel below 125 bits */\n if (targ_bits[1] - move_bits > 125) {\n\n /* if mid channel already has 2x more than average, dont bother */\n /* mean_bits = bits per granule (for both channels) */\n if (targ_bits[0] < mean_bits)\n targ_bits[0] += move_bits;\n targ_bits[1] -= move_bits;\n } else {\n targ_bits[0] += targ_bits[1] - 125;\n targ_bits[1] = 125;\n }\n }\n\n move_bits = targ_bits[0] + targ_bits[1];\n if (move_bits > max_bits) {\n targ_bits[0] = (max_bits * targ_bits[0]) / move_bits;\n targ_bits[1] = (max_bits * targ_bits[1]) / move_bits;\n }\n assert$19(targ_bits[0] <= LameInternalFlags_1.MAX_BITS_PER_CHANNEL);\n assert$19(targ_bits[1] <= LameInternalFlags_1.MAX_BITS_PER_CHANNEL);\n assert$19(targ_bits[0] + targ_bits[1] <= LameInternalFlags_1.MAX_BITS_PER_GRANULE);\n };\n\n /**\n * Robert Hegemann 2001-04-27:\n * this adjusts the ATH, keeping the original noise floor\n * affects the higher frequencies more than the lower ones\n */\n this.athAdjust = function (a, x, athFloor) {\n /*\n * work in progress\n */\n var o = 90.30873362;\n var p = 94.82444863;\n var u = Util$19.FAST_LOG10_X(x, 10.0);\n var v = a * a;\n var w = 0.0;\n u -= athFloor;\n /* undo scaling */\n if (v > 1E-20)\n w = 1. + Util$19.FAST_LOG10_X(v, 10.0 / o);\n if (w < 0)\n w = 0.;\n u *= w;\n u += athFloor + o - p;\n /* redo scaling */\n\n return Math.pow(10., 0.1 * u);\n };\n\n /**\n * Calculate the allowed distortion for each scalefactor band, as determined\n * by the psychoacoustic model. xmin(sb) = ratio(sb) * en(sb) / bw(sb)\n *\n * returns number of sfb's with energy > ATH\n */\n this.calc_xmin = function (gfp, ratio, cod_info, pxmin) {\n var pxminPos = 0;\n var gfc = gfp.internal_flags;\n var gsfb, j = 0, ath_over = 0;\n var ATH = gfc.ATH;\n var xr = cod_info.xr;\n var enable_athaa_fix = (gfp.VBR == VbrMode$19.vbr_mtrh) ? 1 : 0;\n var masking_lower = gfc.masking_lower;\n\n if (gfp.VBR == VbrMode$19.vbr_mtrh || gfp.VBR == VbrMode$19.vbr_mt) {\n /* was already done in PSY-Model */\n masking_lower = 1.0;\n }\n\n for (gsfb = 0; gsfb < cod_info.psy_lmax; gsfb++) {\n var en0, xmin;\n var rh1, rh2;\n var width, l;\n\n if (gfp.VBR == VbrMode$19.vbr_rh || gfp.VBR == VbrMode$19.vbr_mtrh)\n xmin = athAdjust(ATH.adjust, ATH.l[gsfb], ATH.floor);\n else\n xmin = ATH.adjust * ATH.l[gsfb];\n\n width = cod_info.width[gsfb];\n rh1 = xmin / width;\n rh2 = DBL_EPSILON;\n l = width >> 1;\n en0 = 0.0;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += (xa < rh1) ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += (xb < rh1) ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > xmin)\n ath_over++;\n\n if (gsfb == Encoder_1.SBPSY_l) {\n var x = xmin * gfc.nsPsy.longfact[gsfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0) {\n xmin = rh2;\n }\n if (!gfp.ATHonly) {\n var e = ratio.en.l[gsfb];\n if (e > 0.0) {\n var x;\n x = en0 * ratio.thm.l[gsfb] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.longfact[gsfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.longfact[gsfb];\n }\n /* end of long block loop */\n\n /* use this function to determine the highest non-zero coeff */\n var max_nonzero = 575;\n if (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n // NORM, START or STOP type, but not SHORT\n var k = 576;\n while (k-- != 0 && BitStream.EQ(xr[k], 0)) {\n max_nonzero = k;\n }\n }\n cod_info.max_nonzero_coeff = max_nonzero;\n\n for (var sfb = cod_info.sfb_smin; gsfb < cod_info.psymax; sfb++, gsfb += 3) {\n var width, b;\n var tmpATH;\n if (gfp.VBR == VbrMode$19.vbr_rh || gfp.VBR == VbrMode$19.vbr_mtrh)\n tmpATH = athAdjust(ATH.adjust, ATH.s[sfb], ATH.floor);\n else\n tmpATH = ATH.adjust * ATH.s[sfb];\n\n width = cod_info.width[gsfb];\n for (b = 0; b < 3; b++) {\n var en0 = 0.0, xmin;\n var rh1, rh2;\n var l = width >> 1;\n\n rh1 = tmpATH / width;\n rh2 = DBL_EPSILON;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += (xa < rh1) ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += (xb < rh1) ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > tmpATH)\n ath_over++;\n if (sfb == Encoder_1.SBPSY_s) {\n var x = tmpATH * gfc.nsPsy.shortfact[sfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0)\n xmin = rh2;\n else\n xmin = tmpATH;\n\n if (!gfp.ATHonly && !gfp.ATHshort) {\n var e = ratio.en.s[sfb][b];\n if (e > 0.0) {\n var x;\n x = en0 * ratio.thm.s[sfb][b] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.shortfact[sfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.shortfact[sfb];\n }\n /* b */\n if (gfp.useTemporal) {\n if (pxmin[pxminPos - 3] > pxmin[pxminPos - 3 + 1])\n pxmin[pxminPos - 3 + 1] += (pxmin[pxminPos - 3] - pxmin[pxminPos - 3 + 1])\n * gfc.decay;\n if (pxmin[pxminPos - 3 + 1] > pxmin[pxminPos - 3 + 2])\n pxmin[pxminPos - 3 + 2] += (pxmin[pxminPos - 3 + 1] - pxmin[pxminPos - 3 + 2])\n * gfc.decay;\n }\n }\n /* end of short block sfb loop */\n\n return ath_over;\n };\n\n function StartLine(j) {\n this.s = j;\n }\n\n this.calc_noise_core = function (cod_info, startline, l, step) {\n var noise = 0;\n var j = startline.s;\n var ix = cod_info.l3_enc;\n\n if (j > cod_info.count1) {\n while ((l--) != 0) {\n var temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n }\n } else if (j > cod_info.big_values) {\n var ix01 = new_float$19(2);\n ix01[0] = 0;\n ix01[1] = step;\n while ((l--) != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n }\n } else {\n while ((l--) != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n }\n }\n\n startline.s = j;\n return noise;\n };\n\n /**\n *
\n     * -oo dB  =>  -1.00\n     * - 6 dB  =>  -0.97\n     * - 3 dB  =>  -0.80\n     * - 2 dB  =>  -0.64\n     * - 1 dB  =>  -0.38\n     *   0 dB  =>   0.00\n     * + 1 dB  =>  +0.49\n     * + 2 dB  =>  +1.06\n     * + 3 dB  =>  +1.68\n     * + 6 dB  =>  +3.69\n     * +10 dB  =>  +6.45\n     * 
\n */\n this.calc_noise = function (cod_info, l3_xmin, distort, res, prev_noise) {\n var distortPos = 0;\n var l3_xminPos = 0;\n var sfb, l, over = 0;\n var over_noise_db = 0;\n /* 0 dB relative to masking */\n var tot_noise_db = 0;\n /* -200 dB relative to masking */\n var max_noise = -20.0;\n var j = 0;\n var scalefac = cod_info.scalefac;\n var scalefacPos = 0;\n\n res.over_SSD = 0;\n\n for (sfb = 0; sfb < cod_info.psymax; sfb++) {\n var s = cod_info.global_gain\n - (((scalefac[scalefacPos++]) + (cod_info.preflag != 0 ? pretab[sfb]\n : 0)) << (cod_info.scalefac_scale + 1))\n - cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n var noise = 0.0;\n\n if (prev_noise != null && (prev_noise.step[sfb] == s)) {\n\n /* use previously computed values */\n noise = prev_noise.noise[sfb];\n j += cod_info.width[sfb];\n distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n\n noise = prev_noise.noise_log[sfb];\n\n } else {\n var step = POW20(s);\n l = cod_info.width[sfb] >> 1;\n\n if ((j + cod_info.width[sfb]) > cod_info.max_nonzero_coeff) {\n var usefullsize;\n usefullsize = cod_info.max_nonzero_coeff - j + 1;\n\n if (usefullsize > 0)\n l = usefullsize >> 1;\n else\n l = 0;\n }\n\n var sl = new StartLine(j);\n noise = this.calc_noise_core(cod_info, sl, l, step);\n j = sl.s;\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.step[sfb] = s;\n prev_noise.noise[sfb] = noise;\n }\n\n noise = distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n\n /* multiplying here is adding in dB, but can overflow */\n noise = Util$19.FAST_LOG10(Math.max(noise, 1E-20));\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.noise_log[sfb] = noise;\n }\n }\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.global_gain = cod_info.global_gain;\n }\n\n tot_noise_db += noise;\n\n if (noise > 0.0) {\n var tmp;\n\n tmp = Math.max(0 | (noise * 10 + .5), 1);\n res.over_SSD += tmp * tmp;\n\n over++;\n /* multiplying here is adding in dB -but can overflow */\n /* over_noise *= noise; */\n over_noise_db += noise;\n }\n max_noise = Math.max(max_noise, noise);\n\n }\n\n res.over_count = over;\n res.tot_noise = tot_noise_db;\n res.over_noise = over_noise_db;\n res.max_noise = max_noise;\n\n return over;\n };\n\n /**\n * updates plotting data\n *\n * Mark Taylor 2000-??-??\n *\n * Robert Hegemann: moved noise/distortion calc into it\n */\n this.set_pinfo = function (gfp, cod_info, ratio, gr, ch) {\n var gfc = gfp.internal_flags;\n var sfb, sfb2;\n var l;\n var en0, en1;\n var ifqstep = (cod_info.scalefac_scale == 0) ? .5 : 1.0;\n var scalefac = cod_info.scalefac;\n\n var l3_xmin = new_float$19(L3Side.SFBMAX);\n var xfsf = new_float$19(L3Side.SFBMAX);\n var noise = new CalcNoiseResult();\n\n calc_xmin(gfp, ratio, cod_info, l3_xmin);\n calc_noise(cod_info, l3_xmin, xfsf, noise, null);\n\n var j = 0;\n sfb2 = cod_info.sfb_lmax;\n if (cod_info.block_type != Encoder_1.SHORT_TYPE\n && 0 == cod_info.mixed_block_flag)\n sfb2 = 22;\n for (sfb = 0; sfb < sfb2; sfb++) {\n var start = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n var bw = end - start;\n for (en0 = 0.0; j < end; j++)\n en0 += cod_info.xr[j] * cod_info.xr[j];\n en0 /= bw;\n /* convert to MDCT units */\n /* scaling so it shows up on FFT plot */\n en1 = 1e15;\n gfc.pinfo.en[gr][ch][sfb] = en1 * en0;\n gfc.pinfo.xfsf[gr][ch][sfb] = en1 * l3_xmin[sfb] * xfsf[sfb] / bw;\n\n if (ratio.en.l[sfb] > 0 && !gfp.ATHonly)\n en0 = en0 / ratio.en.l[sfb];\n else\n en0 = 0.0;\n\n gfc.pinfo.thr[gr][ch][sfb] = en1\n * Math.max(en0 * ratio.thm.l[sfb], gfc.ATH.l[sfb]);\n\n /* there is no scalefactor bands >= SBPSY_l */\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = 0;\n if (cod_info.preflag != 0 && sfb >= 11)\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = -ifqstep * pretab[sfb];\n\n if (sfb < Encoder_1.SBPSY_l) {\n /* scfsi should be decoded by caller side */\n assert$19(scalefac[sfb] >= 0);\n gfc.pinfo.LAMEsfb[gr][ch][sfb] -= ifqstep * scalefac[sfb];\n }\n }\n /* for sfb */\n\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n sfb2 = sfb;\n for (sfb = cod_info.sfb_smin; sfb < Encoder_1.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n var bw = end - start;\n for (var i = 0; i < 3; i++) {\n for (en0 = 0.0, l = start; l < end; l++) {\n en0 += cod_info.xr[j] * cod_info.xr[j];\n j++;\n }\n en0 = Math.max(en0 / bw, 1e-20);\n /* convert to MDCT units */\n /* scaling so it shows up on FFT plot */\n en1 = 1e15;\n\n gfc.pinfo.en_s[gr][ch][3 * sfb + i] = en1 * en0;\n gfc.pinfo.xfsf_s[gr][ch][3 * sfb + i] = en1 * l3_xmin[sfb2]\n * xfsf[sfb2] / bw;\n if (ratio.en.s[sfb][i] > 0)\n en0 = en0 / ratio.en.s[sfb][i];\n else\n en0 = 0.0;\n if (gfp.ATHonly || gfp.ATHshort)\n en0 = 0;\n\n gfc.pinfo.thr_s[gr][ch][3 * sfb + i] = en1\n * Math.max(en0 * ratio.thm.s[sfb][i],\n gfc.ATH.s[sfb]);\n\n /* there is no scalefactor bands >= SBPSY_s */\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] = -2.0\n * cod_info.subblock_gain[i];\n if (sfb < Encoder_1.SBPSY_s) {\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] -= ifqstep\n * scalefac[sfb2];\n }\n sfb2++;\n }\n }\n }\n /* block type short */\n gfc.pinfo.LAMEqss[gr][ch] = cod_info.global_gain;\n gfc.pinfo.LAMEmainbits[gr][ch] = cod_info.part2_3_length\n + cod_info.part2_length;\n gfc.pinfo.LAMEsfbits[gr][ch] = cod_info.part2_length;\n\n gfc.pinfo.over[gr][ch] = noise.over_count;\n gfc.pinfo.max_noise[gr][ch] = noise.max_noise * 10.0;\n gfc.pinfo.over_noise[gr][ch] = noise.over_noise * 10.0;\n gfc.pinfo.tot_noise[gr][ch] = noise.tot_noise * 10.0;\n gfc.pinfo.over_SSD[gr][ch] = noise.over_SSD;\n };\n\n /**\n * updates plotting data for a whole frame\n *\n * Robert Hegemann 2000-10-21\n */\n \n\n}\n\nvar QuantizePVT_1 = QuantizePVT$1;\n\n/*\n *\tMP3 huffman table selecting and bit counting\n *\n *\tCopyright (c) 1999-2005 Takehiro TOMINAGA\n *\tCopyright (c) 2002-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\t See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Takehiro.java,v 1.26 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\n\nvar System$18 = common.System;\nvar Arrays$18 = common.Arrays;\nvar new_int$18 = common.new_int;\nvar assert$18 = common.assert;\n\n\n\n\n\n\n\nfunction Takehiro$1() {\n\n var qupvt = null;\n this.qupvt = null;\n\n this.setModules = function (_qupvt) {\n this.qupvt = _qupvt;\n qupvt = _qupvt;\n };\n\n function Bits(b) {\n this.bits = 0 | b;\n }\n\n var subdv_table = [[0, 0], /* 0 bands */\n [0, 0], /* 1 bands */\n [0, 0], /* 2 bands */\n [0, 0], /* 3 bands */\n [0, 0], /* 4 bands */\n [0, 1], /* 5 bands */\n [1, 1], /* 6 bands */\n [1, 1], /* 7 bands */\n [1, 2], /* 8 bands */\n [2, 2], /* 9 bands */\n [2, 3], /* 10 bands */\n [2, 3], /* 11 bands */\n [3, 4], /* 12 bands */\n [3, 4], /* 13 bands */\n [3, 4], /* 14 bands */\n [4, 5], /* 15 bands */\n [4, 5], /* 16 bands */\n [4, 6], /* 17 bands */\n [5, 6], /* 18 bands */\n [5, 6], /* 19 bands */\n [5, 7], /* 20 bands */\n [6, 7], /* 21 bands */\n [6, 7], /* 22 bands */\n ];\n\n /**\n * nonlinear quantization of xr More accurate formula than the ISO formula.\n * Takes into account the fact that we are quantizing xr . ix, but we want\n * ix^4/3 to be as close as possible to x^4/3. (taking the nearest int would\n * mean ix is as close as possible to xr, which is different.)\n *\n * From Segher Boessenkool 11/1999\n *\n * 09/2000: ASM code removed in favor of IEEE754 hack by Takehiro Tominaga.\n * If you need the ASM code, check CVS circa Aug 2000.\n *\n * 01/2004: Optimizations by Gabriel Bouvigne\n */\n function quantize_lines_xrpow_01(l, istep, xr, xrPos, ix, ixPos) {\n var compareval0 = (1.0 - 0.4054) / istep;\n\n assert$18(l > 0);\n l = l >> 1;\n while ((l--) != 0) {\n ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1;\n ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1;\n }\n }\n\n /**\n * XRPOW_FTOI is a macro to convert floats to ints.
\n * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x]
\n * ROUNDFAC= -0.0946
\n *\n * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x]
\n * ROUNDFAC=0.4054
\n *\n * Note: using floor() or 0| is extremely slow. On machines where the\n * TAKEHIRO_IEEE754_HACK code above does not work, it is worthwile to write\n * some ASM for XRPOW_FTOI().\n */\n function quantize_lines_xrpow(l, istep, xr, xrPos, ix, ixPos) {\n assert$18(l > 0);\n\n l = l >> 1;\n var remaining = l % 2;\n l = l >> 1;\n while (l-- != 0) {\n var x0, x1, x2, x3;\n var rx0, rx1, rx2, rx3;\n\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n x2 = xr[xrPos++] * istep;\n rx1 = 0 | x1;\n x3 = xr[xrPos++] * istep;\n rx2 = 0 | x2;\n x0 += qupvt.adj43[rx0];\n rx3 = 0 | x3;\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n x2 += qupvt.adj43[rx2];\n ix[ixPos++] = 0 | x1;\n x3 += qupvt.adj43[rx3];\n ix[ixPos++] = 0 | x2;\n ix[ixPos++] = 0 | x3;\n }\n if (remaining != 0) {\n var x0, x1;\n var rx0, rx1;\n\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n rx1 = 0 | x1;\n x0 += qupvt.adj43[rx0];\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n ix[ixPos++] = 0 | x1;\n }\n }\n\n /**\n * Quantization function This function will select which lines to quantize\n * and call the proper quantization function\n */\n function quantize_xrpow(xp, pi, istep, codInfo, prevNoise) {\n /* quantize on xr^(3/4) instead of xr */\n var sfb;\n var sfbmax;\n var j = 0;\n var prev_data_use;\n var accumulate = 0;\n var accumulate01 = 0;\n var xpPos = 0;\n var iData = pi;\n var iDataPos = 0;\n var acc_iData = iData;\n var acc_iDataPos = 0;\n var acc_xp = xp;\n var acc_xpPos = 0;\n\n /*\n * Reusing previously computed data does not seems to work if global\n * gain is changed. Finding why it behaves this way would allow to use a\n * cache of previously computed values (let's 10 cached values per sfb)\n * that would probably provide a noticeable speedup\n */\n prev_data_use = (prevNoise != null && (codInfo.global_gain == prevNoise.global_gain));\n\n if (codInfo.block_type == Encoder_1.SHORT_TYPE)\n sfbmax = 38;\n else\n sfbmax = 21;\n\n for (sfb = 0; sfb <= sfbmax; sfb++) {\n var step = -1;\n\n if (prev_data_use || codInfo.block_type == Encoder_1.NORM_TYPE) {\n step = codInfo.global_gain\n - ((codInfo.scalefac[sfb] + (codInfo.preflag != 0 ? qupvt.pretab[sfb]\n : 0)) << (codInfo.scalefac_scale + 1))\n - codInfo.subblock_gain[codInfo.window[sfb]] * 8;\n }\n assert$18(codInfo.width[sfb] >= 0);\n if (prev_data_use && (prevNoise.step[sfb] == step)) {\n /*\n * do not recompute this part, but compute accumulated lines\n */\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n } else { /* should compute this part */\n var l = codInfo.width[sfb];\n\n if ((j + codInfo.width[sfb]) > codInfo.max_nonzero_coeff) {\n /* do not compute upper zero part */\n var usefullsize;\n usefullsize = codInfo.max_nonzero_coeff - j + 1;\n Arrays$18.fill(pi, codInfo.max_nonzero_coeff, 576, 0);\n l = usefullsize;\n\n if (l < 0) {\n l = 0;\n }\n\n /* no need to compute higher sfb values */\n sfb = sfbmax + 1;\n }\n\n /* accumulate lines to quantize */\n if (0 == accumulate && 0 == accumulate01) {\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n if (prevNoise != null && prevNoise.sfb_count1 > 0\n && sfb >= prevNoise.sfb_count1\n && prevNoise.step[sfb] > 0\n && step >= prevNoise.step[sfb]) {\n\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate01 += l;\n } else {\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate += l;\n }\n\n if (l <= 0) {\n /*\n * rh: 20040215 may happen due to \"prev_data_use\"\n * optimization\n */\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n\n break;\n /* ends for-loop */\n }\n }\n if (sfb <= sfbmax) {\n iDataPos += codInfo.width[sfb];\n xpPos += codInfo.width[sfb];\n j += codInfo.width[sfb];\n }\n }\n if (accumulate != 0) { /* last data part */\n quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n if (accumulate01 != 0) { /* last data part */\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n\n }\n\n /**\n * ix_max\n */\n function ix_max(ix, ixPos, endPos) {\n var max1 = 0, max2 = 0;\n\n do {\n var x1 = ix[ixPos++];\n var x2 = ix[ixPos++];\n if (max1 < x1)\n max1 = x1;\n\n if (max2 < x2)\n max2 = x2;\n } while (ixPos < endPos);\n if (max1 < max2)\n max1 = max2;\n return max1;\n }\n\n function count_bit_ESC(ix, ixPos, end, t1, t2, s) {\n /* ESC-table is used */\n var linbits = Tables_1.ht[t1].xlen * 65536 + Tables_1.ht[t2].xlen;\n var sum = 0, sum2;\n\n do {\n var x = ix[ixPos++];\n var y = ix[ixPos++];\n\n if (x != 0) {\n if (x > 14) {\n x = 15;\n sum += linbits;\n }\n x *= 16;\n }\n\n if (y != 0) {\n if (y > 14) {\n y = 15;\n sum += linbits;\n }\n x += y;\n }\n\n sum += Tables_1.largetbl[x];\n } while (ixPos < end);\n\n sum2 = sum & 0xffff;\n sum >>= 16;\n\n if (sum > sum2) {\n sum = sum2;\n t1 = t2;\n }\n\n s.bits += sum;\n return t1;\n }\n\n function count_bit_noESC(ix, ixPos, end, s) {\n /* No ESC-words */\n var sum1 = 0;\n var hlen1 = Tables_1.ht[1].hlen;\n\n do {\n var x = ix[ixPos + 0] * 2 + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n } while (ixPos < end);\n\n s.bits += sum1;\n return 1;\n }\n\n function count_bit_noESC_from2(ix, ixPos, end, t1, s) {\n /* No ESC-words */\n var sum = 0, sum2;\n var xlen = Tables_1.ht[t1].xlen;\n var hlen;\n if (t1 == 2)\n hlen = Tables_1.table23;\n else\n hlen = Tables_1.table56;\n\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum += hlen[x];\n } while (ixPos < end);\n\n sum2 = sum & 0xffff;\n sum >>= 16;\n\n if (sum > sum2) {\n sum = sum2;\n t1++;\n }\n\n s.bits += sum;\n return t1;\n }\n\n function count_bit_noESC_from3(ix, ixPos, end, t1, s) {\n /* No ESC-words */\n var sum1 = 0;\n var sum2 = 0;\n var sum3 = 0;\n var xlen = Tables_1.ht[t1].xlen;\n var hlen1 = Tables_1.ht[t1].hlen;\n var hlen2 = Tables_1.ht[t1 + 1].hlen;\n var hlen3 = Tables_1.ht[t1 + 2].hlen;\n\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n sum2 += hlen2[x];\n sum3 += hlen3[x];\n } while (ixPos < end);\n var t = t1;\n if (sum1 > sum2) {\n sum1 = sum2;\n t++;\n }\n if (sum1 > sum3) {\n sum1 = sum3;\n t = t1 + 2;\n }\n s.bits += sum1;\n\n return t;\n }\n\n /*************************************************************************/\n /* choose table */\n /*************************************************************************/\n\n var huf_tbl_noESC = [1, 2, 5, 7, 7, 10, 10, 13, 13,\n 13, 13, 13, 13, 13, 13];\n\n /**\n * Choose the Huffman table that will encode ix[begin..end] with the fewest\n * bits.\n *\n * Note: This code contains knowledge about the sizes and characteristics of\n * the Huffman tables as defined in the IS (Table B.7), and will not work\n * with any arbitrary tables.\n */\n function choose_table(ix, ixPos, endPos, s) {\n var max = ix_max(ix, ixPos, endPos);\n\n switch (max) {\n case 0:\n return max;\n\n case 1:\n return count_bit_noESC(ix, ixPos, endPos, s);\n\n case 2:\n case 3:\n return count_bit_noESC_from2(ix, ixPos, endPos,\n huf_tbl_noESC[max - 1], s);\n\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n return count_bit_noESC_from3(ix, ixPos, endPos,\n huf_tbl_noESC[max - 1], s);\n\n default:\n /* try tables with linbits */\n if (max > QuantizePVT_1.IXMAX_VAL) {\n s.bits = QuantizePVT_1.LARGE_BITS;\n return -1;\n }\n max -= 15;\n var choice2;\n for (choice2 = 24; choice2 < 32; choice2++) {\n if (Tables_1.ht[choice2].linmax >= max) {\n break;\n }\n }\n var choice;\n for (choice = choice2 - 8; choice < 24; choice++) {\n if (Tables_1.ht[choice].linmax >= max) {\n break;\n }\n }\n return count_bit_ESC(ix, ixPos, endPos, choice, choice2, s);\n }\n }\n\n /**\n * count_bit\n */\n this.noquant_count_bits = function (gfc, gi, prev_noise) {\n var ix = gi.l3_enc;\n var i = Math.min(576, ((gi.max_nonzero_coeff + 2) >> 1) << 1);\n\n if (prev_noise != null)\n prev_noise.sfb_count1 = 0;\n\n /* Determine count1 region */\n for (; i > 1; i -= 2)\n if ((ix[i - 1] | ix[i - 2]) != 0)\n break;\n gi.count1 = i;\n\n /* Determines the number of bits to encode the quadruples. */\n var a1 = 0;\n var a2 = 0;\n for (; i > 3; i -= 4) {\n var p;\n /* hack to check if all values <= 1 */\n //throw \"TODO: HACK if ((((long) ix[i - 1] | (long) ix[i - 2] | (long) ix[i - 3] | (long) ix[i - 4]) & 0xffffffffL) > 1L \"\n //if (true) {\n if (((ix[i - 1] | ix[i - 2] | ix[i - 3] | ix[i - 4]) & 0x7fffffff) > 1) {\n break;\n }\n p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n a1 += Tables_1.t32l[p];\n a2 += Tables_1.t33l[p];\n }\n var bits = a1;\n gi.count1table_select = 0;\n if (a1 > a2) {\n bits = a2;\n gi.count1table_select = 1;\n }\n\n gi.count1bits = bits;\n gi.big_values = i;\n if (i == 0)\n return bits;\n\n if (gi.block_type == Encoder_1.SHORT_TYPE) {\n a1 = 3 * gfc.scalefac_band.s[3];\n if (a1 > gi.big_values)\n a1 = gi.big_values;\n a2 = gi.big_values;\n\n } else if (gi.block_type == Encoder_1.NORM_TYPE) {\n assert$18(i <= 576);\n /* bv_scf has 576 entries (0..575) */\n a1 = gi.region0_count = gfc.bv_scf[i - 2];\n a2 = gi.region1_count = gfc.bv_scf[i - 1];\n\n assert$18(a1 + a2 + 2 < Encoder_1.SBPSY_l);\n a2 = gfc.scalefac_band.l[a1 + a2 + 2];\n a1 = gfc.scalefac_band.l[a1 + 1];\n if (a2 < i) {\n var bi = new Bits(bits);\n gi.table_select[2] = choose_table(ix, a2, i, bi);\n bits = bi.bits;\n }\n } else {\n gi.region0_count = 7;\n /* gi.region1_count = SBPSY_l - 7 - 1; */\n gi.region1_count = Encoder_1.SBMAX_l - 1 - 7 - 1;\n a1 = gfc.scalefac_band.l[7 + 1];\n a2 = i;\n if (a1 > a2) {\n a1 = a2;\n }\n }\n\n /* have to allow for the case when bigvalues < region0 < region1 */\n /* (and region0, region1 are ignored) */\n a1 = Math.min(a1, i);\n a2 = Math.min(a2, i);\n\n assert$18(a1 >= 0);\n assert$18(a2 >= 0);\n\n /* Count the number of bits necessary to code the bigvalues region. */\n if (0 < a1) {\n var bi = new Bits(bits);\n gi.table_select[0] = choose_table(ix, 0, a1, bi);\n bits = bi.bits;\n }\n if (a1 < a2) {\n var bi = new Bits(bits);\n gi.table_select[1] = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n }\n if (gfc.use_best_huffman == 2) {\n gi.part2_3_length = bits;\n best_huffman_divide(gfc, gi);\n bits = gi.part2_3_length;\n }\n\n if (prev_noise != null) {\n if (gi.block_type == Encoder_1.NORM_TYPE) {\n var sfb = 0;\n while (gfc.scalefac_band.l[sfb] < gi.big_values) {\n sfb++;\n }\n prev_noise.sfb_count1 = sfb;\n }\n }\n\n return bits;\n };\n\n this.count_bits = function (gfc, xr, gi, prev_noise) {\n var ix = gi.l3_enc;\n\n /* since quantize_xrpow uses table lookup, we need to check this first: */\n var w = (QuantizePVT_1.IXMAX_VAL) / qupvt.IPOW20(gi.global_gain);\n\n if (gi.xrpow_max > w)\n return QuantizePVT_1.LARGE_BITS;\n\n quantize_xrpow(xr, ix, qupvt.IPOW20(gi.global_gain), gi, prev_noise);\n\n if ((gfc.substep_shaping & 2) != 0) {\n var j = 0;\n /* 0.634521682242439 = 0.5946*2**(.5*0.1875) */\n var gain = gi.global_gain + gi.scalefac_scale;\n var roundfac = 0.634521682242439 / qupvt.IPOW20(gain);\n for (var sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n assert$18(width >= 0);\n if (0 == gfc.pseudohalf[sfb]) {\n j += width;\n } else {\n var k;\n for (k = j, j += width; k < j; ++k) {\n ix[k] = (xr[k] >= roundfac) ? ix[k] : 0;\n }\n }\n }\n }\n return this.noquant_count_bits(gfc, gi, prev_noise);\n };\n\n /**\n * re-calculate the best scalefac_compress using scfsi the saved bits are\n * kept in the bit reservoir.\n */\n function recalc_divide_init(gfc, cod_info, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info.big_values;\n\n for (var r0 = 0; r0 <= 7 + 15; r0++) {\n r01_bits[r0] = QuantizePVT_1.LARGE_BITS;\n }\n\n for (var r0 = 0; r0 < 16; r0++) {\n var a1 = gfc.scalefac_band.l[r0 + 1];\n if (a1 >= bigv)\n break;\n var r0bits = 0;\n var bi = new Bits(r0bits);\n var r0t = choose_table(ix, 0, a1, bi);\n r0bits = bi.bits;\n\n for (var r1 = 0; r1 < 8; r1++) {\n var a2 = gfc.scalefac_band.l[r0 + r1 + 2];\n if (a2 >= bigv)\n break;\n var bits = r0bits;\n bi = new Bits(bits);\n var r1t = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n if (r01_bits[r0 + r1] > bits) {\n r01_bits[r0 + r1] = bits;\n r01_div[r0 + r1] = r0;\n r0_tbl[r0 + r1] = r0t;\n r1_tbl[r0 + r1] = r1t;\n }\n }\n }\n }\n\n function recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info2.big_values;\n\n for (var r2 = 2; r2 < Encoder_1.SBMAX_l + 1; r2++) {\n var a2 = gfc.scalefac_band.l[r2];\n if (a2 >= bigv)\n break;\n var bits = r01_bits[r2 - 2] + cod_info2.count1bits;\n if (gi.part2_3_length <= bits)\n break;\n\n var bi = new Bits(bits);\n var r2t = choose_table(ix, a2, bigv, bi);\n bits = bi.bits;\n if (gi.part2_3_length <= bits)\n continue;\n\n gi.assign(cod_info2);\n gi.part2_3_length = bits;\n gi.region0_count = r01_div[r2 - 2];\n gi.region1_count = r2 - 2 - r01_div[r2 - 2];\n gi.table_select[0] = r0_tbl[r2 - 2];\n gi.table_select[1] = r1_tbl[r2 - 2];\n gi.table_select[2] = r2t;\n }\n }\n\n this.best_huffman_divide = function (gfc, gi) {\n var cod_info2 = new GrInfo_1();\n var ix = gi.l3_enc;\n var r01_bits = new_int$18(7 + 15 + 1);\n var r01_div = new_int$18(7 + 15 + 1);\n var r0_tbl = new_int$18(7 + 15 + 1);\n var r1_tbl = new_int$18(7 + 15 + 1);\n\n /* SHORT BLOCK stuff fails for MPEG2 */\n if (gi.block_type == Encoder_1.SHORT_TYPE && gfc.mode_gr == 1)\n return;\n\n cod_info2.assign(gi);\n if (gi.block_type == Encoder_1.NORM_TYPE) {\n recalc_divide_init(gfc, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl);\n recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div,\n r0_tbl, r1_tbl);\n }\n var i = cod_info2.big_values;\n if (i == 0 || (ix[i - 2] | ix[i - 1]) > 1)\n return;\n\n i = gi.count1 + 2;\n if (i > 576)\n return;\n\n /* Determines the number of bits to encode the quadruples. */\n cod_info2.assign(gi);\n cod_info2.count1 = i;\n var a1 = 0;\n var a2 = 0;\n\n assert$18(i <= 576);\n\n for (; i > cod_info2.big_values; i -= 4) {\n var p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2\n + ix[i - 1];\n a1 += Tables_1.t32l[p];\n a2 += Tables_1.t33l[p];\n }\n cod_info2.big_values = i;\n\n cod_info2.count1table_select = 0;\n if (a1 > a2) {\n a1 = a2;\n cod_info2.count1table_select = 1;\n }\n\n cod_info2.count1bits = a1;\n\n if (cod_info2.block_type == Encoder_1.NORM_TYPE)\n recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div,\n r0_tbl, r1_tbl);\n else {\n /* Count the number of bits necessary to code the bigvalues region. */\n cod_info2.part2_3_length = a1;\n a1 = gfc.scalefac_band.l[7 + 1];\n if (a1 > i) {\n a1 = i;\n }\n if (a1 > 0) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[0] = choose_table(ix, 0, a1, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (i > a1) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[1] = choose_table(ix, a1, i, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (gi.part2_3_length > cod_info2.part2_3_length)\n gi.assign(cod_info2);\n }\n };\n\n var slen1_n = [1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16];\n var slen2_n = [1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8];\n var slen1_tab = [0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4];\n var slen2_tab = [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3];\n Takehiro$1.slen1_tab = slen1_tab;\n Takehiro$1.slen2_tab = slen2_tab;\n\n function scfsi_calc(ch, l3_side) {\n var sfb;\n var gi = l3_side.tt[1][ch];\n var g0 = l3_side.tt[0][ch];\n\n for (var i = 0; i < Tables_1.scfsi_band.length - 1; i++) {\n for (sfb = Tables_1.scfsi_band[i]; sfb < Tables_1.scfsi_band[i + 1]; sfb++) {\n if (g0.scalefac[sfb] != gi.scalefac[sfb]\n && gi.scalefac[sfb] >= 0)\n break;\n }\n if (sfb == Tables_1.scfsi_band[i + 1]) {\n for (sfb = Tables_1.scfsi_band[i]; sfb < Tables_1.scfsi_band[i + 1]; sfb++) {\n gi.scalefac[sfb] = -1;\n }\n l3_side.scfsi[ch][i] = 1;\n }\n }\n var s1 = 0;\n var c1 = 0;\n for (sfb = 0; sfb < 11; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c1++;\n if (s1 < gi.scalefac[sfb])\n s1 = gi.scalefac[sfb];\n }\n var s2 = 0;\n var c2 = 0;\n for (; sfb < Encoder_1.SBPSY_l; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c2++;\n if (s2 < gi.scalefac[sfb])\n s2 = gi.scalefac[sfb];\n }\n\n for (var i = 0; i < 16; i++) {\n if (s1 < slen1_n[i] && s2 < slen2_n[i]) {\n var c = slen1_tab[i] * c1 + slen2_tab[i] * c2;\n if (gi.part2_length > c) {\n gi.part2_length = c;\n gi.scalefac_compress = i;\n }\n }\n }\n }\n\n /**\n * Find the optimal way to store the scalefactors. Only call this routine\n * after final scalefactors have been chosen and the channel/granule will\n * not be re-encoded.\n */\n this.best_scalefac_store = function (gfc, gr, ch, l3_side) {\n /* use scalefac_scale if we can */\n var gi = l3_side.tt[gr][ch];\n var sfb, i, j, l;\n var recalc = 0;\n\n /*\n * remove scalefacs from bands with ix=0. This idea comes from the AAC\n * ISO docs. added mt 3/00\n */\n /* check if l3_enc=0 */\n j = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n assert$18(width >= 0);\n j += width;\n for (l = -width; l < 0; l++) {\n if (gi.l3_enc[l + j] != 0)\n break;\n }\n if (l == 0)\n gi.scalefac[sfb] = recalc = -2;\n /* anything goes. */\n /*\n * only best_scalefac_store and calc_scfsi know--and only they\n * should know--about the magic number -2.\n */\n }\n\n if (0 == gi.scalefac_scale && 0 == gi.preflag) {\n var s = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++)\n if (gi.scalefac[sfb] > 0)\n s |= gi.scalefac[sfb];\n\n if (0 == (s & 1) && s != 0) {\n for (sfb = 0; sfb < gi.sfbmax; sfb++)\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] >>= 1;\n\n gi.scalefac_scale = recalc = 1;\n }\n }\n\n if (0 == gi.preflag && gi.block_type != Encoder_1.SHORT_TYPE\n && gfc.mode_gr == 2) {\n for (sfb = 11; sfb < Encoder_1.SBPSY_l; sfb++)\n if (gi.scalefac[sfb] < qupvt.pretab[sfb]\n && gi.scalefac[sfb] != -2)\n break;\n if (sfb == Encoder_1.SBPSY_l) {\n for (sfb = 11; sfb < Encoder_1.SBPSY_l; sfb++)\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] -= qupvt.pretab[sfb];\n\n gi.preflag = recalc = 1;\n }\n }\n\n for (i = 0; i < 4; i++)\n l3_side.scfsi[ch][i] = 0;\n\n if (gfc.mode_gr == 2 && gr == 1\n && l3_side.tt[0][ch].block_type != Encoder_1.SHORT_TYPE\n && l3_side.tt[1][ch].block_type != Encoder_1.SHORT_TYPE) {\n scfsi_calc(ch, l3_side);\n recalc = 0;\n }\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -2) {\n gi.scalefac[sfb] = 0;\n /* if anything goes, then 0 is a good choice */\n }\n }\n if (recalc != 0) {\n if (gfc.mode_gr == 2) {\n this.scale_bitcount(gi);\n } else {\n this.scale_bitcount_lsf(gfc, gi);\n }\n }\n };\n\n function all_scalefactors_not_negative(scalefac, n) {\n for (var i = 0; i < n; ++i) {\n if (scalefac[i] < 0)\n return false;\n }\n return true;\n }\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 18*slen1_tab[i] + 18*slen2_tab[i]\n */\n var scale_short = [0, 18, 36, 54, 54, 36, 54, 72,\n 54, 72, 90, 72, 90, 108, 108, 126];\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 17*slen1_tab[i] + 18*slen2_tab[i]\n */\n var scale_mixed = [0, 18, 36, 54, 51, 35, 53, 71,\n 52, 70, 88, 69, 87, 105, 104, 122];\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 11*slen1_tab[i] + 10*slen2_tab[i]\n */\n var scale_long = [0, 10, 20, 30, 33, 21, 31, 41, 32, 42,\n 52, 43, 53, 63, 64, 74];\n\n /**\n * Also calculates the number of bits necessary to code the scalefactors.\n */\n this.scale_bitcount = function (cod_info) {\n var k, sfb, max_slen1 = 0, max_slen2 = 0;\n\n /* maximum values */\n var tab;\n var scalefac = cod_info.scalefac;\n\n assert$18(all_scalefactors_not_negative(scalefac, cod_info.sfbmax));\n\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n tab = scale_short;\n if (cod_info.mixed_block_flag != 0)\n tab = scale_mixed;\n } else { /* block_type == 1,2,or 3 */\n tab = scale_long;\n if (0 == cod_info.preflag) {\n for (sfb = 11; sfb < Encoder_1.SBPSY_l; sfb++)\n if (scalefac[sfb] < qupvt.pretab[sfb])\n break;\n\n if (sfb == Encoder_1.SBPSY_l) {\n cod_info.preflag = 1;\n for (sfb = 11; sfb < Encoder_1.SBPSY_l; sfb++)\n scalefac[sfb] -= qupvt.pretab[sfb];\n }\n }\n }\n\n for (sfb = 0; sfb < cod_info.sfbdivide; sfb++)\n if (max_slen1 < scalefac[sfb])\n max_slen1 = scalefac[sfb];\n\n for (; sfb < cod_info.sfbmax; sfb++)\n if (max_slen2 < scalefac[sfb])\n max_slen2 = scalefac[sfb];\n\n /*\n * from Takehiro TOMINAGA 10/99 loop over *all*\n * posible values of scalefac_compress to find the one which uses the\n * smallest number of bits. ISO would stop at first valid index\n */\n cod_info.part2_length = QuantizePVT_1.LARGE_BITS;\n for (k = 0; k < 16; k++) {\n if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k]\n && cod_info.part2_length > tab[k]) {\n cod_info.part2_length = tab[k];\n cod_info.scalefac_compress = k;\n }\n }\n return cod_info.part2_length == QuantizePVT_1.LARGE_BITS;\n };\n\n /**\n * table of largest scalefactor values for MPEG2\n */\n var max_range_sfac_tab = [[15, 15, 7, 7],\n [15, 15, 7, 0], [7, 3, 0, 0], [15, 31, 31, 0],\n [7, 7, 7, 0], [3, 3, 0, 0]];\n\n /**\n * Also counts the number of bits to encode the scalefacs but for MPEG 2\n * Lower sampling frequencies (24, 22.05 and 16 kHz.)\n *\n * This is reverse-engineered from section 2.4.3.2 of the MPEG2 IS,\n * \"Audio Decoding Layer III\"\n */\n this.scale_bitcount_lsf = function (gfc, cod_info) {\n var table_number, row_in_table, partition, nr_sfb, window;\n var over;\n var i, sfb;\n var max_sfac = new_int$18(4);\n//var partition_table;\n var scalefac = cod_info.scalefac;\n\n /*\n * Set partition table. Note that should try to use table one, but do\n * not yet...\n */\n if (cod_info.preflag != 0)\n table_number = 2;\n else\n table_number = 0;\n\n for (i = 0; i < 4; i++)\n max_sfac[i] = 0;\n\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n row_in_table = 1;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition] / 3;\n for (i = 0; i < nr_sfb; i++, sfb++)\n for (window = 0; window < 3; window++)\n if (scalefac[sfb * 3 + window] > max_sfac[partition])\n max_sfac[partition] = scalefac[sfb * 3 + window];\n }\n } else {\n row_in_table = 0;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition];\n for (i = 0; i < nr_sfb; i++, sfb++)\n if (scalefac[sfb] > max_sfac[partition])\n max_sfac[partition] = scalefac[sfb];\n }\n }\n\n for (over = false, partition = 0; partition < 4; partition++) {\n if (max_sfac[partition] > max_range_sfac_tab[table_number][partition])\n over = true;\n }\n if (!over) {\n var slen1, slen2, slen3, slen4;\n\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (partition = 0; partition < 4; partition++)\n cod_info.slen[partition] = log2tab[max_sfac[partition]];\n\n /* set scalefac_compress */\n slen1 = cod_info.slen[0];\n slen2 = cod_info.slen[1];\n slen3 = cod_info.slen[2];\n slen4 = cod_info.slen[3];\n\n switch (table_number) {\n case 0:\n cod_info.scalefac_compress = (((slen1 * 5) + slen2) << 4)\n + (slen3 << 2) + slen4;\n break;\n\n case 1:\n cod_info.scalefac_compress = 400 + (((slen1 * 5) + slen2) << 2)\n + slen3;\n break;\n\n case 2:\n cod_info.scalefac_compress = 500 + (slen1 * 3) + slen2;\n break;\n\n default:\n System$18.err.printf(\"intensity stereo not implemented yet\\n\");\n break;\n }\n }\n if (!over) {\n assert$18(cod_info.sfb_partition_table != null);\n cod_info.part2_length = 0;\n for (partition = 0; partition < 4; partition++)\n cod_info.part2_length += cod_info.slen[partition]\n * cod_info.sfb_partition_table[partition];\n }\n return over;\n };\n\n /*\n * Since no bands have been over-amplified, we can set scalefac_compress and\n * slen[] for the formatter\n */\n var log2tab = [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4,\n 4, 4, 4, 4];\n\n this.huffman_init = function (gfc) {\n for (var i = 2; i <= 576; i += 2) {\n var scfb_anz = 0, bv_index;\n while (gfc.scalefac_band.l[++scfb_anz] < i)\n ;\n\n bv_index = subdv_table[scfb_anz][0]; // .region0_count\n while (gfc.scalefac_band.l[bv_index + 1] > i)\n bv_index--;\n\n if (bv_index < 0) {\n /*\n * this is an indication that everything is going to be encoded\n * as region0: bigvalues < region0 < region1 so lets set\n * region0, region1 to some value larger than bigvalues\n */\n bv_index = subdv_table[scfb_anz][0]; // .region0_count\n }\n\n gfc.bv_scf[i - 2] = bv_index;\n\n bv_index = subdv_table[scfb_anz][1]; // .region1_count\n while (gfc.scalefac_band.l[bv_index + gfc.bv_scf[i - 2] + 2] > i)\n bv_index--;\n\n if (bv_index < 0) {\n bv_index = subdv_table[scfb_anz][1]; // .region1_count\n }\n\n gfc.bv_scf[i - 1] = bv_index;\n }\n };\n}\n\nvar Takehiro_1 = Takehiro$1;\n\nvar System$17 = common.System;\nvar Arrays$17 = common.Arrays;\nvar new_byte$17 = common.new_byte;\nvar new_float_n$17 = common.new_float_n;\nvar new_int$17 = common.new_int;\nvar assert$17 = common.assert;\n\n\n\n\n\n\nBitStream$1.EQ = function (a, b) {\n return (Math.abs(a) > Math.abs(b)) ? (Math.abs((a) - (b)) <= (Math\n .abs(a) * 1e-6))\n : (Math.abs((a) - (b)) <= (Math.abs(b) * 1e-6));\n};\n\nBitStream$1.NEQ = function (a, b) {\n return !BitStream$1.EQ(a, b);\n};\n\nfunction BitStream$1() {\n var self = this;\n var CRC16_POLYNOMIAL = 0x8005;\n\n /*\n * we work with ints, so when doing bit manipulation, we limit ourselves to\n * MAX_LENGTH-2 just to be on the safe side\n */\n var MAX_LENGTH = 32;\n\n //GainAnalysis ga;\n //MPGLib mpg;\n //Version ver;\n //VBRTag vbr;\n var ga = null;\n var mpg = null;\n var ver = null;\n var vbr = null;\n\n //public final void setModules(GainAnalysis ga, MPGLib mpg, Version ver,\n //\tVBRTag vbr) {\n\n this.setModules = function (_ga, _mpg, _ver, _vbr) {\n ga = _ga;\n mpg = _mpg;\n ver = _ver;\n vbr = _vbr;\n };\n\n /**\n * Bit stream buffer.\n */\n //private byte[] buf;\n var buf = null;\n /**\n * Bit counter of bit stream.\n */\n var totbit = 0;\n /**\n * Pointer to top byte in buffer.\n */\n var bufByteIdx = 0;\n /**\n * Pointer to top bit of top byte in buffer.\n */\n var bufBitIdx = 0;\n\n /**\n * compute bitsperframe and mean_bits for a layer III frame\n */\n this.getframebits = function (gfp) {\n var gfc = gfp.internal_flags;\n var bit_rate;\n\n /* get bitrate in kbps [?] */\n if (gfc.bitrate_index != 0)\n bit_rate = Tables_1.bitrate_table[gfp.version][gfc.bitrate_index];\n else\n bit_rate = gfp.brate;\n assert$17(8 <= bit_rate && bit_rate <= 640);\n\n /* main encoding routine toggles padding on and off */\n /* one Layer3 Slot consists of 8 bits */\n var bytes = 0 | (gfp.version + 1) * 72000 * bit_rate / gfp.out_samplerate + gfc.padding;\n return 8 * bytes;\n };\n\n function putheader_bits(gfc) {\n System$17.arraycopy(gfc.header[gfc.w_ptr].buf, 0, buf, bufByteIdx, gfc.sideinfo_len);\n bufByteIdx += gfc.sideinfo_len;\n totbit += gfc.sideinfo_len * 8;\n gfc.w_ptr = (gfc.w_ptr + 1) & (LameInternalFlags_1.MAX_HEADER_BUF - 1);\n }\n\n /**\n * write j bits into the bit stream\n */\n function putbits2(gfc, val, j) {\n assert$17(j < MAX_LENGTH - 2);\n\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n assert$17(bufByteIdx < Lame.LAME_MAXMP3BUFFER);\n assert$17(gfc.header[gfc.w_ptr].write_timing >= totbit);\n if (gfc.header[gfc.w_ptr].write_timing == totbit) {\n putheader_bits(gfc);\n }\n buf[bufByteIdx] = 0;\n }\n\n k = Math.min(j, bufBitIdx);\n j -= k;\n\n bufBitIdx -= k;\n\n assert$17(j < MAX_LENGTH);\n /* 32 too large on 32 bit machines */\n assert$17(bufBitIdx < MAX_LENGTH);\n\n buf[bufByteIdx] |= ((val >> j) << bufBitIdx);\n totbit += k;\n }\n }\n\n /**\n * write j bits into the bit stream, ignoring frame headers\n */\n function putbits_noheaders(gfc, val, j) {\n assert$17(j < MAX_LENGTH - 2);\n\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n assert$17(bufByteIdx < Lame.LAME_MAXMP3BUFFER);\n buf[bufByteIdx] = 0;\n }\n\n k = Math.min(j, bufBitIdx);\n j -= k;\n\n bufBitIdx -= k;\n\n assert$17(j < MAX_LENGTH);\n /* 32 too large on 32 bit machines */\n assert$17(bufBitIdx < MAX_LENGTH);\n\n buf[bufByteIdx] |= ((val >> j) << bufBitIdx);\n totbit += k;\n }\n }\n\n /**\n * Some combinations of bitrate, Fs, and stereo make it impossible to stuff\n * out a frame using just main_data, due to the limited number of bits to\n * indicate main_data_length. In these situations, we put stuffing bits into\n * the ancillary data...\n */\n function drain_into_ancillary(gfp, remainingBits) {\n var gfc = gfp.internal_flags;\n var i;\n assert$17(remainingBits >= 0);\n\n if (remainingBits >= 8) {\n putbits2(gfc, 0x4c, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x41, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x4d, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x45, 8);\n remainingBits -= 8;\n }\n\n if (remainingBits >= 32) {\n var version = ver.getLameShortVersion();\n if (remainingBits >= 32)\n for (i = 0; i < version.length && remainingBits >= 8; ++i) {\n remainingBits -= 8;\n putbits2(gfc, version.charAt(i), 8);\n }\n }\n\n for (; remainingBits >= 1; remainingBits -= 1) {\n putbits2(gfc, gfc.ancillary_flag, 1);\n gfc.ancillary_flag ^= (!gfp.disable_reservoir ? 1 : 0);\n }\n\n assert$17(remainingBits == 0);\n\n }\n\n /**\n * write N bits into the header\n */\n function writeheader(gfc, val, j) {\n var ptr = gfc.header[gfc.h_ptr].ptr;\n\n while (j > 0) {\n var k = Math.min(j, 8 - (ptr & 7));\n j -= k;\n assert$17(j < MAX_LENGTH);\n /* >> 32 too large for 32 bit machines */\n\n gfc.header[gfc.h_ptr].buf[ptr >> 3] |= ((val >> j)) << (8 - (ptr & 7) - k);\n ptr += k;\n }\n gfc.header[gfc.h_ptr].ptr = ptr;\n }\n\n function CRC_update(value, crc) {\n value <<= 8;\n for (var i = 0; i < 8; i++) {\n value <<= 1;\n crc <<= 1;\n\n if ((((crc ^ value) & 0x10000) != 0))\n crc ^= CRC16_POLYNOMIAL;\n }\n return crc;\n }\n\n this.CRC_writeheader = function (gfc, header) {\n var crc = 0xffff;\n /* (jo) init crc16 for error_protection */\n\n crc = CRC_update(header[2] & 0xff, crc);\n crc = CRC_update(header[3] & 0xff, crc);\n for (var i = 6; i < gfc.sideinfo_len; i++) {\n crc = CRC_update(header[i] & 0xff, crc);\n }\n\n header[4] = (byte)(crc >> 8);\n header[5] = (byte)(crc & 255);\n };\n\n function encodeSideInfo2(gfp, bitsPerFrame) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var gr, ch;\n\n l3_side = gfc.l3_side;\n gfc.header[gfc.h_ptr].ptr = 0;\n Arrays$17.fill(gfc.header[gfc.h_ptr].buf, 0, gfc.sideinfo_len, 0);\n if (gfp.out_samplerate < 16000)\n writeheader(gfc, 0xffe, 12);\n else\n writeheader(gfc, 0xfff, 12);\n writeheader(gfc, (gfp.version), 1);\n writeheader(gfc, 4 - 3, 2);\n writeheader(gfc, (!gfp.error_protection ? 1 : 0), 1);\n writeheader(gfc, (gfc.bitrate_index), 4);\n writeheader(gfc, (gfc.samplerate_index), 2);\n writeheader(gfc, (gfc.padding), 1);\n writeheader(gfc, (gfp.extension), 1);\n writeheader(gfc, (gfp.mode.ordinal()), 2);\n writeheader(gfc, (gfc.mode_ext), 2);\n writeheader(gfc, (gfp.copyright), 1);\n writeheader(gfc, (gfp.original), 1);\n writeheader(gfc, (gfp.emphasis), 2);\n if (gfp.error_protection) {\n writeheader(gfc, 0, 16);\n /* dummy */\n }\n\n if (gfp.version == 1) {\n /* MPEG1 */\n assert$17(l3_side.main_data_begin >= 0);\n writeheader(gfc, (l3_side.main_data_begin), 9);\n\n if (gfc.channels_out == 2)\n writeheader(gfc, l3_side.private_bits, 3);\n else\n writeheader(gfc, l3_side.private_bits, 5);\n\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var band;\n for (band = 0; band < 4; band++) {\n writeheader(gfc, l3_side.scfsi[ch][band], 1);\n }\n }\n\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 4);\n\n if (gi.block_type != Encoder_1.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n /* window_switching_flag */\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n /* window_switching_flag */\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n\n assert$17(0 <= gi.region0_count && gi.region0_count < 16);\n assert$17(0 <= gi.region1_count && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n writeheader(gfc, gi.preflag, 1);\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n } else {\n /* MPEG2 */\n assert$17(l3_side.main_data_begin >= 0);\n writeheader(gfc, (l3_side.main_data_begin), 8);\n writeheader(gfc, l3_side.private_bits, gfc.channels_out);\n\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 9);\n\n if (gi.block_type != Encoder_1.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n /* window_switching_flag */\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n /* window_switching_flag */\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n\n assert$17(0 <= gi.region0_count && gi.region0_count < 16);\n assert$17(0 <= gi.region1_count && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n\n if (gfp.error_protection) {\n /* (jo) error_protection: add crc16 information to header */\n CRC_writeheader(gfc, gfc.header[gfc.h_ptr].buf);\n }\n\n {\n var old = gfc.h_ptr;\n assert$17(gfc.header[old].ptr == gfc.sideinfo_len * 8);\n\n gfc.h_ptr = (old + 1) & (LameInternalFlags_1.MAX_HEADER_BUF - 1);\n gfc.header[gfc.h_ptr].write_timing = gfc.header[old].write_timing\n + bitsPerFrame;\n\n if (gfc.h_ptr == gfc.w_ptr) {\n /* yikes! we are out of header buffer space */\n System$17.err\n .println(\"Error: MAX_HEADER_BUF too small in bitstream.c \\n\");\n }\n\n }\n }\n\n function huffman_coder_count1(gfc, gi) {\n /* Write count1 area */\n var h = Tables_1.ht[gi.count1table_select + 32];\n var i, bits = 0;\n\n var ix = gi.big_values;\n var xr = gi.big_values;\n assert$17(gi.count1table_select < 2);\n\n for (i = (gi.count1 - gi.big_values) / 4; i > 0; --i) {\n var huffbits = 0;\n var p = 0, v;\n\n v = gi.l3_enc[ix + 0];\n if (v != 0) {\n p += 8;\n if (gi.xr[xr + 0] < 0)\n huffbits++;\n assert$17(v <= 1);\n }\n\n v = gi.l3_enc[ix + 1];\n if (v != 0) {\n p += 4;\n huffbits *= 2;\n if (gi.xr[xr + 1] < 0)\n huffbits++;\n assert$17(v <= 1);\n }\n\n v = gi.l3_enc[ix + 2];\n if (v != 0) {\n p += 2;\n huffbits *= 2;\n if (gi.xr[xr + 2] < 0)\n huffbits++;\n assert$17(v <= 1);\n }\n\n v = gi.l3_enc[ix + 3];\n if (v != 0) {\n p++;\n huffbits *= 2;\n if (gi.xr[xr + 3] < 0)\n huffbits++;\n assert$17(v <= 1);\n }\n\n ix += 4;\n xr += 4;\n putbits2(gfc, huffbits + h.table[p], h.hlen[p]);\n bits += h.hlen[p];\n }\n return bits;\n }\n\n /**\n * Implements the pseudocode of page 98 of the IS\n */\n function Huffmancode(gfc, tableindex, start, end, gi) {\n var h = Tables_1.ht[tableindex];\n var bits = 0;\n\n assert$17(tableindex < 32);\n if (0 == tableindex)\n return bits;\n\n for (var i = start; i < end; i += 2) {\n var cbits = 0;\n var xbits = 0;\n var linbits = h.xlen;\n var xlen = h.xlen;\n var ext = 0;\n var x1 = gi.l3_enc[i];\n var x2 = gi.l3_enc[i + 1];\n\n if (x1 != 0) {\n if (gi.xr[i] < 0)\n ext++;\n cbits--;\n }\n\n if (tableindex > 15) {\n /* use ESC-words */\n if (x1 > 14) {\n var linbits_x1 = x1 - 15;\n assert$17(linbits_x1 <= h.linmax);\n ext |= linbits_x1 << 1;\n xbits = linbits;\n x1 = 15;\n }\n\n if (x2 > 14) {\n var linbits_x2 = x2 - 15;\n assert$17(linbits_x2 <= h.linmax);\n ext <<= linbits;\n ext |= linbits_x2;\n xbits += linbits;\n x2 = 15;\n }\n xlen = 16;\n }\n\n if (x2 != 0) {\n ext <<= 1;\n if (gi.xr[i + 1] < 0)\n ext++;\n cbits--;\n }\n\n assert$17((x1 | x2) < 16);\n\n x1 = x1 * xlen + x2;\n xbits -= cbits;\n cbits += h.hlen[x1];\n\n assert$17(cbits <= MAX_LENGTH);\n assert$17(xbits <= MAX_LENGTH);\n\n putbits2(gfc, h.table[x1], cbits);\n putbits2(gfc, ext, xbits);\n bits += cbits + xbits;\n }\n return bits;\n }\n\n /**\n * Note the discussion of huffmancodebits() on pages 28 and 29 of the IS, as\n * well as the definitions of the side information on pages 26 and 27.\n */\n function ShortHuffmancodebits(gfc, gi) {\n var region1Start = 3 * gfc.scalefac_band.s[3];\n if (region1Start > gi.big_values)\n region1Start = gi.big_values;\n\n /* short blocks do not have a region2 */\n var bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(gfc, gi.table_select[1], region1Start,\n gi.big_values, gi);\n return bits;\n }\n\n function LongHuffmancodebits(gfc, gi) {\n var bigvalues, bits;\n var region1Start, region2Start;\n\n bigvalues = gi.big_values;\n assert$17(0 <= bigvalues && bigvalues <= 576);\n\n var i = gi.region0_count + 1;\n assert$17(0 <= i);\n assert$17(i < gfc.scalefac_band.l.length);\n region1Start = gfc.scalefac_band.l[i];\n i += gi.region1_count + 1;\n assert$17(0 <= i);\n assert$17(i < gfc.scalefac_band.l.length);\n region2Start = gfc.scalefac_band.l[i];\n\n if (region1Start > bigvalues)\n region1Start = bigvalues;\n\n if (region2Start > bigvalues)\n region2Start = bigvalues;\n\n bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(gfc, gi.table_select[1], region1Start,\n region2Start, gi);\n bits += Huffmancode(gfc, gi.table_select[2], region2Start, bigvalues,\n gi);\n return bits;\n }\n\n function writeMainData(gfp) {\n var gr, ch, sfb, data_bits, tot_bits = 0;\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n\n if (gfp.version == 1) {\n /* MPEG 1 */\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var slen1 = Takehiro_1.slen1_tab[gi.scalefac_compress];\n var slen2 = Takehiro_1.slen2_tab[gi.scalefac_compress];\n data_bits = 0;\n for (sfb = 0; sfb < gi.sfbdivide; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n /* scfsi is used */\n putbits2(gfc, gi.scalefac[sfb], slen1);\n data_bits += slen1;\n }\n for (; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n /* scfsi is used */\n putbits2(gfc, gi.scalefac[sfb], slen2);\n data_bits += slen2;\n }\n assert$17(data_bits == gi.part2_length);\n\n if (gi.block_type == Encoder_1.SHORT_TYPE) {\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n /* does bitcount in quantize.c agree with actual bit count? */\n assert$17(data_bits == gi.part2_3_length + gi.part2_length);\n tot_bits += data_bits;\n }\n /* for ch */\n }\n /* for gr */\n } else {\n /* MPEG 2 */\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var i, sfb_partition, scale_bits = 0;\n assert$17(gi.sfb_partition_table != null);\n data_bits = 0;\n sfb = 0;\n sfb_partition = 0;\n\n if (gi.block_type == Encoder_1.SHORT_TYPE) {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition] / 3;\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 0], 0), slen);\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 1], 0), slen);\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 2], 0), slen);\n scale_bits += 3 * slen;\n }\n }\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition];\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc, Math.max(gi.scalefac[sfb], 0), slen);\n scale_bits += slen;\n }\n }\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n /* does bitcount in quantize.c agree with actual bit count? */\n assert$17(data_bits == gi.part2_3_length);\n assert$17(scale_bits == gi.part2_length);\n tot_bits += scale_bits + data_bits;\n }\n /* for ch */\n }\n /* for gf */\n return tot_bits;\n }\n\n /* main_data */\n\n function TotalBytes() {\n this.total = 0;\n }\n\n /*\n * compute the number of bits required to flush all mp3 frames currently in\n * the buffer. This should be the same as the reservoir size. Only call this\n * routine between frames - i.e. only after all headers and data have been\n * added to the buffer by format_bitstream().\n *\n * Also compute total_bits_output = size of mp3 buffer (including frame\n * headers which may not have yet been send to the mp3 buffer) + number of\n * bits needed to flush all mp3 frames.\n *\n * total_bytes_output is the size of the mp3 output buffer if\n * lame_encode_flush_nogap() was called right now.\n */\n function compute_flushbits(gfp, total_bytes_output) {\n var gfc = gfp.internal_flags;\n var flushbits, remaining_headers;\n var bitsPerFrame;\n var last_ptr, first_ptr;\n first_ptr = gfc.w_ptr;\n /* first header to add to bitstream */\n last_ptr = gfc.h_ptr - 1;\n /* last header to add to bitstream */\n if (last_ptr == -1)\n last_ptr = LameInternalFlags_1.MAX_HEADER_BUF - 1;\n\n /* add this many bits to bitstream so we can flush all headers */\n flushbits = gfc.header[last_ptr].write_timing - totbit;\n total_bytes_output.total = flushbits;\n\n if (flushbits >= 0) {\n /* if flushbits >= 0, some headers have not yet been written */\n /* reduce flushbits by the size of the headers */\n remaining_headers = 1 + last_ptr - first_ptr;\n if (last_ptr < first_ptr)\n remaining_headers = 1 + last_ptr - first_ptr\n + LameInternalFlags_1.MAX_HEADER_BUF;\n flushbits -= remaining_headers * 8 * gfc.sideinfo_len;\n }\n\n /*\n * finally, add some bits so that the last frame is complete these bits\n * are not necessary to decode the last frame, but some decoders will\n * ignore last frame if these bits are missing\n */\n bitsPerFrame = self.getframebits(gfp);\n flushbits += bitsPerFrame;\n total_bytes_output.total += bitsPerFrame;\n /* round up: */\n if ((total_bytes_output.total % 8) != 0)\n total_bytes_output.total = 1 + (total_bytes_output.total / 8);\n else\n total_bytes_output.total = (total_bytes_output.total / 8);\n total_bytes_output.total += bufByteIdx + 1;\n\n if (flushbits < 0) {\n System$17.err.println(\"strange error flushing buffer ... \\n\");\n }\n return flushbits;\n }\n\n this.flush_bitstream = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var flushbits;\n var last_ptr = gfc.h_ptr - 1;\n /* last header to add to bitstream */\n if (last_ptr == -1)\n last_ptr = LameInternalFlags_1.MAX_HEADER_BUF - 1;\n l3_side = gfc.l3_side;\n\n if ((flushbits = compute_flushbits(gfp, new TotalBytes())) < 0)\n return;\n drain_into_ancillary(gfp, flushbits);\n\n /* check that the 100% of the last frame has been written to bitstream */\n assert$17(gfc.header[last_ptr].write_timing + this.getframebits(gfp) == totbit);\n\n /*\n * we have padded out all frames with ancillary data, which is the same\n * as filling the bitreservoir with ancillary data, so :\n */\n gfc.ResvSize = 0;\n l3_side.main_data_begin = 0;\n\n /* save the ReplayGain value */\n if (gfc.findReplayGain) {\n var RadioGain = ga.GetTitleGain(gfc.rgdata);\n assert$17(NEQ(RadioGain, GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES));\n gfc.RadioGain = Math.floor(RadioGain * 10.0 + 0.5) | 0;\n /* round to nearest */\n }\n\n /* find the gain and scale change required for no clipping */\n if (gfc.findPeakSample) {\n gfc.noclipGainChange = Math.ceil(Math\n .log10(gfc.PeakSample / 32767.0) * 20.0 * 10.0) | 0;\n /* round up */\n\n if (gfc.noclipGainChange > 0) {\n /* clipping occurs */\n if (EQ(gfp.scale, 1.0) || EQ(gfp.scale, 0.0))\n gfc.noclipScale = (Math\n .floor((32767.0 / gfc.PeakSample) * 100.0) / 100.0);\n /* round down */\n else {\n /*\n * the user specified his own scaling factor. We could\n * suggest the scaling factor of\n * (32767.0/gfp.PeakSample)*(gfp.scale) but it's usually\n * very inaccurate. So we'd rather not advice him on the\n * scaling factor.\n */\n gfc.noclipScale = -1;\n }\n } else\n /* no clipping */\n gfc.noclipScale = -1;\n }\n };\n\n this.add_dummy_byte = function (gfp, val, n) {\n var gfc = gfp.internal_flags;\n var i;\n\n while (n-- > 0) {\n putbits_noheaders(gfc, val, 8);\n\n for (i = 0; i < LameInternalFlags_1.MAX_HEADER_BUF; ++i)\n gfc.header[i].write_timing += 8;\n }\n };\n\n /**\n * This is called after a frame of audio has been quantized and coded. It\n * will write the encoded audio to the bitstream. Note that from a layer3\n * encoder's perspective the bit stream is primarily a series of main_data()\n * blocks, with header and side information inserted at the proper locations\n * to maintain framing. (See Figure A.7 in the IS).\n */\n this.format_bitstream = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n l3_side = gfc.l3_side;\n\n var bitsPerFrame = this.getframebits(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_pre);\n\n encodeSideInfo2(gfp, bitsPerFrame);\n var bits = 8 * gfc.sideinfo_len;\n bits += writeMainData(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_post);\n bits += l3_side.resvDrain_post;\n\n l3_side.main_data_begin += (bitsPerFrame - bits) / 8;\n\n /*\n * compare number of bits needed to clear all buffered mp3 frames with\n * what we think the resvsize is:\n */\n if (compute_flushbits(gfp, new TotalBytes()) != gfc.ResvSize) {\n System$17.err.println(\"Internal buffer inconsistency. flushbits <> ResvSize\");\n }\n\n /*\n * compare main_data_begin for the next frame with what we think the\n * resvsize is:\n */\n if ((l3_side.main_data_begin * 8) != gfc.ResvSize) {\n System$17.err.printf(\"bit reservoir error: \\n\"\n + \"l3_side.main_data_begin: %d \\n\"\n + \"Resvoir size: %d \\n\"\n + \"resv drain (post) %d \\n\"\n + \"resv drain (pre) %d \\n\"\n + \"header and sideinfo: %d \\n\"\n + \"data bits: %d \\n\"\n + \"total bits: %d (remainder: %d) \\n\"\n + \"bitsperframe: %d \\n\",\n 8 * l3_side.main_data_begin, gfc.ResvSize,\n l3_side.resvDrain_post, l3_side.resvDrain_pre,\n 8 * gfc.sideinfo_len, bits - l3_side.resvDrain_post - 8\n * gfc.sideinfo_len, bits, bits % 8, bitsPerFrame);\n\n System$17.err.println(\"This is a fatal error. It has several possible causes:\");\n System$17.err.println(\"90%% LAME compiled with buggy version of gcc using advanced optimizations\");\n System$17.err.println(\" 9%% Your system is overclocked\");\n System$17.err.println(\" 1%% bug in LAME encoding library\");\n\n gfc.ResvSize = l3_side.main_data_begin * 8;\n }\n //;\n assert$17(totbit % 8 == 0);\n\n if (totbit > 1000000000) {\n /*\n * to avoid totbit overflow, (at 8h encoding at 128kbs) lets reset\n * bit counter\n */\n var i;\n for (i = 0; i < LameInternalFlags_1.MAX_HEADER_BUF; ++i)\n gfc.header[i].write_timing -= totbit;\n totbit = 0;\n }\n\n return 0;\n };\n\n /**\n *
\n     * copy data out of the internal MP3 bit buffer into a user supplied\n     *       unsigned char buffer.\n     *\n     *       mp3data=0      indicates data in buffer is an id3tags and VBR tags\n     *       mp3data=1      data is real mp3 frame data.\n     * 
\n */\n this.copy_buffer = function (gfc, buffer, bufferPos, size, mp3data) {\n var minimum = bufByteIdx + 1;\n if (minimum <= 0)\n return 0;\n if (size != 0 && minimum > size) {\n /* buffer is too small */\n return -1;\n }\n System$17.arraycopy(buf, 0, buffer, bufferPos, minimum);\n bufByteIdx = -1;\n bufBitIdx = 0;\n\n if (mp3data != 0) {\n var crc = new_int$17(1);\n crc[0] = gfc.nMusicCRC;\n vbr.updateMusicCRC(crc, buffer, bufferPos, minimum);\n gfc.nMusicCRC = crc[0];\n\n /**\n * sum number of bytes belonging to the mp3 stream this info will be\n * written into the Xing/LAME header for seeking\n */\n if (minimum > 0) {\n gfc.VBR_seek_table.nBytesWritten += minimum;\n }\n\n if (gfc.decode_on_the_fly) { /* decode the frame */\n var pcm_buf = new_float_n$17([2, 1152]);\n var mp3_in = minimum;\n var samples_out = -1;\n var i;\n\n /* re-synthesis to pcm. Repeat until we get a samples_out=0 */\n while (samples_out != 0) {\n\n samples_out = mpg.hip_decode1_unclipped(gfc.hip, buffer,\n bufferPos, mp3_in, pcm_buf[0], pcm_buf[1]);\n /*\n * samples_out = 0: need more data to decode samples_out =\n * -1: error. Lets assume 0 pcm output samples_out = number\n * of samples output\n */\n\n /*\n * set the lenght of the mp3 input buffer to zero, so that\n * in the next iteration of the loop we will be querying\n * mpglib about buffered data\n */\n mp3_in = 0;\n\n if (samples_out == -1) {\n /*\n * error decoding. Not fatal, but might screw up the\n * ReplayGain tag. What should we do? Ignore for now\n */\n samples_out = 0;\n }\n if (samples_out > 0) {\n /* process the PCM data */\n\n /*\n * this should not be possible, and indicates we have\n * overflown the pcm_buf buffer\n */\n assert$17(samples_out <= 1152);\n\n if (gfc.findPeakSample) {\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[0][i] > gfc.PeakSample)\n gfc.PeakSample = pcm_buf[0][i];\n else if (-pcm_buf[0][i] > gfc.PeakSample)\n gfc.PeakSample = -pcm_buf[0][i];\n }\n if (gfc.channels_out > 1)\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[1][i] > gfc.PeakSample)\n gfc.PeakSample = pcm_buf[1][i];\n else if (-pcm_buf[1][i] > gfc.PeakSample)\n gfc.PeakSample = -pcm_buf[1][i];\n }\n }\n\n if (gfc.findReplayGain)\n if (ga.AnalyzeSamples(gfc.rgdata, pcm_buf[0], 0,\n pcm_buf[1], 0, samples_out,\n gfc.channels_out) == GainAnalysis.GAIN_ANALYSIS_ERROR)\n return -6;\n\n }\n /* if (samples_out>0) */\n }\n /* while (samples_out!=0) */\n }\n /* if (gfc.decode_on_the_fly) */\n\n }\n /* if (mp3data) */\n return minimum;\n };\n\n this.init_bit_stream_w = function (gfc) {\n buf = new_byte$17(Lame.LAME_MAXMP3BUFFER);\n\n gfc.h_ptr = gfc.w_ptr = 0;\n gfc.header[gfc.h_ptr].write_timing = 0;\n bufByteIdx = -1;\n bufBitIdx = 0;\n totbit = 0;\n };\n\n // From machine.h\n\n\n}\n\nvar BitStream_1 = BitStream$1;\n\nvar System$2 = common.System;\nvar VbrMode$2 = common.VbrMode;\nvar ShortBlock$2 = common.ShortBlock;\nvar new_float$2 = common.new_float;\nvar new_int_n$2 = common.new_int_n;\nvar new_short_n$1 = common.new_short_n;\nvar assert$2 = common.assert;\n\n\n\n\n\n\n\n\n\n\n\nfunction Lame$1() {\n var self = this;\n var LAME_MAXALBUMART = (128 * 1024);\n\n Lame$1.V9 = 410;\n Lame$1.V8 = 420;\n Lame$1.V7 = 430;\n Lame$1.V6 = 440;\n Lame$1.V5 = 450;\n Lame$1.V4 = 460;\n Lame$1.V3 = 470;\n Lame$1.V2 = 480;\n Lame$1.V1 = 490;\n Lame$1.V0 = 500;\n\n /* still there for compatibility */\n\n Lame$1.R3MIX = 1000;\n Lame$1.STANDARD = 1001;\n Lame$1.EXTREME = 1002;\n Lame$1.INSANE = 1003;\n Lame$1.STANDARD_FAST = 1004;\n Lame$1.EXTREME_FAST = 1005;\n Lame$1.MEDIUM = 1006;\n Lame$1.MEDIUM_FAST = 1007;\n\n /**\n * maximum size of mp3buffer needed if you encode at most 1152 samples for\n * each call to lame_encode_buffer. see lame_encode_buffer() below\n * (LAME_MAXMP3BUFFER is now obsolete)\n */\n var LAME_MAXMP3BUFFER = (16384 + LAME_MAXALBUMART);\n Lame$1.LAME_MAXMP3BUFFER = LAME_MAXMP3BUFFER;\n\n var ga;\n var bs;\n var p;\n var qupvt;\n var qu;\n var psy = new PsyModel_1();\n var vbr;\n var ver;\n var id3;\n var mpglib;\n this.enc = new Encoder_1();\n\n this.setModules = function (_ga, _bs, _p, _qupvt, _qu, _vbr, _ver, _id3, _mpglib) {\n ga = _ga;\n bs = _bs;\n p = _p;\n qupvt = _qupvt;\n qu = _qu;\n vbr = _vbr;\n ver = _ver;\n id3 = _id3;\n mpglib = _mpglib;\n this.enc.setModules(bs, psy, qupvt, vbr);\n };\n\n /**\n * PSY Model related stuff\n */\n function PSY() {\n /**\n * The dbQ stuff.\n */\n this.mask_adjust = 0.;\n /**\n * The dbQ stuff.\n */\n this.mask_adjust_short = 0.;\n /* at transition from one scalefactor band to next */\n /**\n * Band weight long scalefactor bands.\n */\n this.bo_l_weight = new_float$2(Encoder_1.SBMAX_l);\n /**\n * Band weight short scalefactor bands.\n */\n this.bo_s_weight = new_float$2(Encoder_1.SBMAX_s);\n }\n\n function LowPassHighPass() {\n this.lowerlimit = 0.;\n }\n\n function BandPass(bitrate, lPass) {\n this.lowpass = lPass;\n }\n\n var LAME_ID = 0xFFF88E3B;\n\n function lame_init_old(gfp) {\n var gfc;\n\n gfp.class_id = LAME_ID;\n\n gfc = gfp.internal_flags = new LameInternalFlags_1();\n\n /* Global flags. set defaults here for non-zero values */\n /* see lame.h for description */\n /*\n * set integer values to -1 to mean that LAME will compute the best\n * value, UNLESS the calling program as set it (and the value is no\n * longer -1)\n */\n\n gfp.mode = MPEGMode.NOT_SET;\n gfp.original = 1;\n gfp.in_samplerate = 44100;\n gfp.num_channels = 2;\n gfp.num_samples = -1;\n\n gfp.bWriteVbrTag = true;\n gfp.quality = -1;\n gfp.short_blocks = null;\n gfc.subblock_gain = -1;\n\n gfp.lowpassfreq = 0;\n gfp.highpassfreq = 0;\n gfp.lowpasswidth = -1;\n gfp.highpasswidth = -1;\n\n gfp.VBR = VbrMode$2.vbr_off;\n gfp.VBR_q = 4;\n gfp.ATHcurve = -1;\n gfp.VBR_mean_bitrate_kbps = 128;\n gfp.VBR_min_bitrate_kbps = 0;\n gfp.VBR_max_bitrate_kbps = 0;\n gfp.VBR_hard_min = 0;\n gfc.VBR_min_bitrate = 1;\n /* not 0 ????? */\n gfc.VBR_max_bitrate = 13;\n /* not 14 ????? */\n\n gfp.quant_comp = -1;\n gfp.quant_comp_short = -1;\n\n gfp.msfix = -1;\n\n gfc.resample_ratio = 1;\n\n gfc.OldValue[0] = 180;\n gfc.OldValue[1] = 180;\n gfc.CurrentStep[0] = 4;\n gfc.CurrentStep[1] = 4;\n gfc.masking_lower = 1;\n gfc.nsPsy.attackthre = -1;\n gfc.nsPsy.attackthre_s = -1;\n\n gfp.scale = -1;\n\n gfp.athaa_type = -1;\n gfp.ATHtype = -1;\n /* default = -1 = set in lame_init_params */\n gfp.athaa_loudapprox = -1;\n /* 1 = flat loudness approx. (total energy) */\n /* 2 = equal loudness curve */\n gfp.athaa_sensitivity = 0.0;\n /* no offset */\n gfp.useTemporal = null;\n gfp.interChRatio = -1;\n\n /*\n * The reason for int mf_samples_to_encode = ENCDELAY + POSTDELAY;\n * ENCDELAY = internal encoder delay. And then we have to add\n * POSTDELAY=288 because of the 50% MDCT overlap. A 576 MDCT granule\n * decodes to 1152 samples. To synthesize the 576 samples centered under\n * this granule we need the previous granule for the first 288 samples\n * (no problem), and the next granule for the next 288 samples (not\n * possible if this is last granule). So we need to pad with 288 samples\n * to make sure we can encode the 576 samples we are interested in.\n */\n gfc.mf_samples_to_encode = Encoder_1.ENCDELAY + Encoder_1.POSTDELAY;\n gfp.encoder_padding = 0;\n gfc.mf_size = Encoder_1.ENCDELAY - Encoder_1.MDCTDELAY;\n /*\n * we pad input with this many 0's\n */\n\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n\n gfc.decode_on_the_fly = false;\n gfc.findReplayGain = false;\n gfc.findPeakSample = false;\n\n gfc.RadioGain = 0;\n gfc.AudiophileGain = 0;\n gfc.noclipGainChange = 0;\n gfc.noclipScale = -1.0;\n\n gfp.preset = 0;\n\n gfp.write_id3tag_automatic = true;\n return 0;\n }\n\n this.lame_init = function () {\n var gfp = new LameGlobalFlags_1();\n\n var ret = lame_init_old(gfp);\n if (ret != 0) {\n return null;\n }\n\n gfp.lame_allocated_gfp = 1;\n return gfp;\n };\n\n function filter_coef(x) {\n if (x > 1.0)\n return 0.0;\n if (x <= 0.0)\n return 1.0;\n\n return Math.cos(Math.PI / 2 * x);\n }\n\n this.nearestBitrateFullIndex = function (bitrate) {\n /* borrowed from DM abr presets */\n\n var full_bitrate_table = [8, 16, 24, 32, 40, 48, 56, 64, 80,\n 96, 112, 128, 160, 192, 224, 256, 320];\n\n var lower_range = 0, lower_range_kbps = 0, upper_range = 0, upper_range_kbps = 0;\n\n /* We assume specified bitrate will be 320kbps */\n upper_range_kbps = full_bitrate_table[16];\n upper_range = 16;\n lower_range_kbps = full_bitrate_table[16];\n lower_range = 16;\n\n /*\n * Determine which significant bitrates the value specified falls\n * between, if loop ends without breaking then we were correct above\n * that the value was 320\n */\n for (var b = 0; b < 16; b++) {\n if ((Math.max(bitrate, full_bitrate_table[b + 1])) != bitrate) {\n upper_range_kbps = full_bitrate_table[b + 1];\n upper_range = b + 1;\n lower_range_kbps = full_bitrate_table[b];\n lower_range = (b);\n break;\n /* We found upper range */\n }\n }\n\n /* Determine which range the value specified is closer to */\n if ((upper_range_kbps - bitrate) > (bitrate - lower_range_kbps)) {\n return lower_range;\n }\n return upper_range;\n };\n\n function optimum_samplefreq(lowpassfreq, input_samplefreq) {\n /*\n * Rules:\n *\n * - if possible, sfb21 should NOT be used\n */\n var suggested_samplefreq = 44100;\n\n if (input_samplefreq >= 48000)\n suggested_samplefreq = 48000;\n else if (input_samplefreq >= 44100)\n suggested_samplefreq = 44100;\n else if (input_samplefreq >= 32000)\n suggested_samplefreq = 32000;\n else if (input_samplefreq >= 24000)\n suggested_samplefreq = 24000;\n else if (input_samplefreq >= 22050)\n suggested_samplefreq = 22050;\n else if (input_samplefreq >= 16000)\n suggested_samplefreq = 16000;\n else if (input_samplefreq >= 12000)\n suggested_samplefreq = 12000;\n else if (input_samplefreq >= 11025)\n suggested_samplefreq = 11025;\n else if (input_samplefreq >= 8000)\n suggested_samplefreq = 8000;\n\n if (lowpassfreq == -1)\n return suggested_samplefreq;\n\n if (lowpassfreq <= 15960)\n suggested_samplefreq = 44100;\n if (lowpassfreq <= 15250)\n suggested_samplefreq = 32000;\n if (lowpassfreq <= 11220)\n suggested_samplefreq = 24000;\n if (lowpassfreq <= 9970)\n suggested_samplefreq = 22050;\n if (lowpassfreq <= 7230)\n suggested_samplefreq = 16000;\n if (lowpassfreq <= 5420)\n suggested_samplefreq = 12000;\n if (lowpassfreq <= 4510)\n suggested_samplefreq = 11025;\n if (lowpassfreq <= 3970)\n suggested_samplefreq = 8000;\n\n if (input_samplefreq < suggested_samplefreq) {\n /*\n * choose a valid MPEG sample frequency above the input sample\n * frequency to avoid SFB21/12 bitrate bloat rh 061115\n */\n if (input_samplefreq > 44100) {\n return 48000;\n }\n if (input_samplefreq > 32000) {\n return 44100;\n }\n if (input_samplefreq > 24000) {\n return 32000;\n }\n if (input_samplefreq > 22050) {\n return 24000;\n }\n if (input_samplefreq > 16000) {\n return 22050;\n }\n if (input_samplefreq > 12000) {\n return 16000;\n }\n if (input_samplefreq > 11025) {\n return 12000;\n }\n if (input_samplefreq > 8000) {\n return 11025;\n }\n return 8000;\n }\n return suggested_samplefreq;\n }\n\n /**\n * convert samp freq in Hz to index\n */\n function SmpFrqIndex(sample_freq, gpf) {\n switch (sample_freq) {\n case 44100:\n gpf.version = 1;\n return 0;\n case 48000:\n gpf.version = 1;\n return 1;\n case 32000:\n gpf.version = 1;\n return 2;\n case 22050:\n gpf.version = 0;\n return 0;\n case 24000:\n gpf.version = 0;\n return 1;\n case 16000:\n gpf.version = 0;\n return 2;\n case 11025:\n gpf.version = 0;\n return 0;\n case 12000:\n gpf.version = 0;\n return 1;\n case 8000:\n gpf.version = 0;\n return 2;\n default:\n gpf.version = 0;\n return -1;\n }\n }\n\n /**\n * @param bRate\n * legal rates from 8 to 320\n */\n function FindNearestBitrate(bRate, version, samplerate) {\n /* MPEG-1 or MPEG-2 LSF */\n if (samplerate < 16000)\n version = 2;\n\n var bitrate = Tables_1.bitrate_table[version][1];\n\n for (var i = 2; i <= 14; i++) {\n if (Tables_1.bitrate_table[version][i] > 0) {\n if (Math.abs(Tables_1.bitrate_table[version][i] - bRate) < Math\n .abs(bitrate - bRate))\n bitrate = Tables_1.bitrate_table[version][i];\n }\n }\n return bitrate;\n }\n\n /**\n * @param bRate\n * legal rates from 32 to 448 kbps\n * @param version\n * MPEG-1 or MPEG-2/2.5 LSF\n */\n function BitrateIndex(bRate, version, samplerate) {\n /* convert bitrate in kbps to index */\n if (samplerate < 16000)\n version = 2;\n for (var i = 0; i <= 14; i++) {\n if (Tables_1.bitrate_table[version][i] > 0) {\n if (Tables_1.bitrate_table[version][i] == bRate) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function optimum_bandwidth(lh, bitrate) {\n /**\n *
\n         *  Input:\n         *      bitrate     total bitrate in kbps\n         *\n         *   Output:\n         *      lowerlimit: best lowpass frequency limit for input filter in Hz\n         *      upperlimit: best highpass frequency limit for input filter in Hz\n         * 
\n */\n var freq_map = [new BandPass(8, 2000),\n new BandPass(16, 3700), new BandPass(24, 3900),\n new BandPass(32, 5500), new BandPass(40, 7000),\n new BandPass(48, 7500), new BandPass(56, 10000),\n new BandPass(64, 11000), new BandPass(80, 13500),\n new BandPass(96, 15100), new BandPass(112, 15600),\n new BandPass(128, 17000), new BandPass(160, 17500),\n new BandPass(192, 18600), new BandPass(224, 19400),\n new BandPass(256, 19700), new BandPass(320, 20500)];\n\n var table_index = self.nearestBitrateFullIndex(bitrate);\n lh.lowerlimit = freq_map[table_index].lowpass;\n }\n\n function lame_init_params_ppflt(gfp) {\n var gfc = gfp.internal_flags;\n /***************************************************************/\n /* compute info needed for polyphase filter (filter type==0, default) */\n /***************************************************************/\n\n var lowpass_band = 32;\n var highpass_band = -1;\n\n if (gfc.lowpass1 > 0) {\n var minband = 999;\n for (var band = 0; band <= 31; band++) {\n var freq = (band / 31.0);\n /* this band and above will be zeroed: */\n if (freq >= gfc.lowpass2) {\n lowpass_band = Math.min(lowpass_band, band);\n }\n if (gfc.lowpass1 < freq && freq < gfc.lowpass2) {\n minband = Math.min(minband, band);\n }\n }\n\n /*\n * compute the *actual* transition band implemented by the polyphase\n * filter\n */\n if (minband == 999) {\n gfc.lowpass1 = (lowpass_band - .75) / 31.0;\n } else {\n gfc.lowpass1 = (minband - .75) / 31.0;\n }\n gfc.lowpass2 = lowpass_band / 31.0;\n }\n\n /*\n * make sure highpass filter is within 90% of what the effective\n * highpass frequency will be\n */\n if (gfc.highpass2 > 0) {\n if (gfc.highpass2 < .9 * (.75 / 31.0)) {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n System$2.err.println(\"Warning: highpass filter disabled. \"\n + \"highpass frequency too small\\n\");\n }\n }\n\n if (gfc.highpass2 > 0) {\n var maxband = -1;\n for (var band = 0; band <= 31; band++) {\n var freq = band / 31.0;\n /* this band and below will be zereod */\n if (freq <= gfc.highpass1) {\n highpass_band = Math.max(highpass_band, band);\n }\n if (gfc.highpass1 < freq && freq < gfc.highpass2) {\n maxband = Math.max(maxband, band);\n }\n }\n /*\n * compute the *actual* transition band implemented by the polyphase\n * filter\n */\n gfc.highpass1 = highpass_band / 31.0;\n if (maxband == -1) {\n gfc.highpass2 = (highpass_band + .75) / 31.0;\n } else {\n gfc.highpass2 = (maxband + .75) / 31.0;\n }\n }\n\n for (var band = 0; band < 32; band++) {\n var fc1, fc2;\n var freq = band / 31.0;\n if (gfc.highpass2 > gfc.highpass1) {\n fc1 = filter_coef((gfc.highpass2 - freq)\n / (gfc.highpass2 - gfc.highpass1 + 1e-20));\n } else {\n fc1 = 1.0;\n }\n if (gfc.lowpass2 > gfc.lowpass1) {\n fc2 = filter_coef((freq - gfc.lowpass1)\n / (gfc.lowpass2 - gfc.lowpass1 + 1e-20));\n } else {\n fc2 = 1.0;\n }\n gfc.amp_filter[band] = (fc1 * fc2);\n }\n }\n\n function lame_init_qval(gfp) {\n var gfc = gfp.internal_flags;\n\n switch (gfp.quality) {\n default:\n case 9: /* no psymodel, no noise shaping */\n gfc.psymodel = 0;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 8:\n gfp.quality = 7;\n //$FALL-THROUGH$\n case 7:\n /*\n * use psymodel (for short block and m/s switching), but no noise\n * shapping\n */\n gfc.psymodel = 1;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 6:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 5:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 4:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 3:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 2:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n /* inner loop */\n gfc.full_outer_loop = 0;\n break;\n\n case 1:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 0:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n /*\n * type 2 disabled because of it slowness, in favor of full outer\n * loop search\n */\n gfc.full_outer_loop = 0;\n /*\n * full outer loop search disabled because of audible distortions it\n * may generate rh 060629\n */\n break;\n }\n\n }\n\n function lame_init_bitstream(gfp) {\n var gfc = gfp.internal_flags;\n gfp.frameNum = 0;\n\n if (gfp.write_id3tag_automatic) {\n id3.id3tag_write_v2(gfp);\n }\n /* initialize histogram data optionally used by frontend */\n\n gfc.bitrate_stereoMode_Hist = new_int_n$2([16, 4 + 1]);\n gfc.bitrate_blockType_Hist = new_int_n$2([16, 4 + 1 + 1]);\n\n gfc.PeakSample = 0.0;\n\n /* Write initial VBR Header to bitstream and init VBR data */\n if (gfp.bWriteVbrTag)\n vbr.InitVbrTag(gfp);\n }\n\n /********************************************************************\n * initialize internal params based on data in gf (globalflags struct filled\n * in by calling program)\n *\n * OUTLINE:\n *\n * We first have some complex code to determine bitrate, output samplerate\n * and mode. It is complicated by the fact that we allow the user to set\n * some or all of these parameters, and need to determine best possible\n * values for the rest of them:\n *\n * 1. set some CPU related flags 2. check if we are mono.mono, stereo.mono\n * or stereo.stereo 3. compute bitrate and output samplerate: user may have\n * set compression ratio user may have set a bitrate user may have set a\n * output samplerate 4. set some options which depend on output samplerate\n * 5. compute the actual compression ratio 6. set mode based on compression\n * ratio\n *\n * The remaining code is much simpler - it just sets options based on the\n * mode & compression ratio:\n *\n * set allow_diff_short based on mode select lowpass filter based on\n * compression ratio & mode set the bitrate index, and min/max bitrates for\n * VBR modes disable VBR tag if it is not appropriate initialize the\n * bitstream initialize scalefac_band data set sideinfo_len (based on\n * channels, CRC, out_samplerate) write an id3v2 tag into the bitstream\n * write VBR tag into the bitstream set mpeg1/2 flag estimate the number of\n * frames (based on a lot of data)\n *\n * now we set more flags: nspsytune: see code VBR modes see code CBR/ABR see\n * code\n *\n * Finally, we set the algorithm flags based on the gfp.quality value\n * lame_init_qval(gfp);\n *\n ********************************************************************/\n this.lame_init_params = function (gfp) {\n var gfc = gfp.internal_flags;\n\n gfc.Class_ID = 0;\n if (gfc.ATH == null)\n gfc.ATH = new ATH_1();\n if (gfc.PSY == null)\n gfc.PSY = new PSY();\n if (gfc.rgdata == null)\n gfc.rgdata = new ReplayGain_1();\n\n gfc.channels_in = gfp.num_channels;\n if (gfc.channels_in == 1)\n gfp.mode = MPEGMode.MONO;\n gfc.channels_out = (gfp.mode == MPEGMode.MONO) ? 1 : 2;\n gfc.mode_ext = Encoder_1.MPG_MD_MS_LR;\n if (gfp.mode == MPEGMode.MONO)\n gfp.force_ms = false;\n /*\n * don't allow forced mid/side stereo for mono output\n */\n\n if (gfp.VBR == VbrMode$2.vbr_off && gfp.VBR_mean_bitrate_kbps != 128\n && gfp.brate == 0)\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n\n if (gfp.VBR == VbrMode$2.vbr_off || gfp.VBR == VbrMode$2.vbr_mtrh\n || gfp.VBR == VbrMode$2.vbr_mt) {\n /* these modes can handle free format condition */\n } else {\n gfp.free_format = false;\n /* mode can't be mixed with free format */\n }\n\n if (gfp.VBR == VbrMode$2.vbr_off && gfp.brate == 0) {\n /* no bitrate or compression ratio specified, use 11.025 */\n if (BitStream_1.EQ(gfp.compression_ratio, 0))\n gfp.compression_ratio = 11.025;\n /*\n * rate to compress a CD down to exactly 128000 bps\n */\n }\n\n /* find bitrate if user specify a compression ratio */\n if (gfp.VBR == VbrMode$2.vbr_off && gfp.compression_ratio > 0) {\n\n if (gfp.out_samplerate == 0)\n gfp.out_samplerate = map2MP3Frequency((int)(0.97 * gfp.in_samplerate));\n /*\n * round up with a margin of 3 %\n */\n\n /*\n * choose a bitrate for the output samplerate which achieves\n * specified compression ratio\n */\n gfp.brate = 0 | (gfp.out_samplerate * 16 * gfc.channels_out / (1.e3 * gfp.compression_ratio));\n\n /* we need the version for the bitrate table look up */\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n\n if (!gfp.free_format) /*\n * for non Free Format find the nearest allowed\n * bitrate\n */\n gfp.brate = FindNearestBitrate(gfp.brate, gfp.version,\n gfp.out_samplerate);\n }\n\n if (gfp.out_samplerate != 0) {\n if (gfp.out_samplerate < 16000) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 64);\n } else if (gfp.out_samplerate < 32000) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 160);\n } else {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 32);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 320);\n }\n }\n\n /****************************************************************/\n /* if a filter has not been enabled, see if we should add one: */\n /****************************************************************/\n if (gfp.lowpassfreq == 0) {\n var lowpass = 16000.;\n\n switch (gfp.VBR) {\n case VbrMode$2.vbr_off:\n {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.brate);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode$2.vbr_abr:\n {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.VBR_mean_bitrate_kbps);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode$2.vbr_rh:\n {\n var x = [19500, 19000, 18600, 18000, 17500, 16000,\n 15600, 14900, 12500, 10000, 3950];\n if (0 <= gfp.VBR_q && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q], b = x[gfp.VBR_q + 1], m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n break;\n }\n default:\n {\n var x = [19500, 19000, 18500, 18000, 17500, 16500,\n 15500, 14500, 12500, 9500, 3950];\n if (0 <= gfp.VBR_q && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q], b = x[gfp.VBR_q + 1], m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n }\n }\n if (gfp.mode == MPEGMode.MONO\n && (gfp.VBR == VbrMode$2.vbr_off || gfp.VBR == VbrMode$2.vbr_abr))\n lowpass *= 1.5;\n\n gfp.lowpassfreq = lowpass | 0;\n }\n\n if (gfp.out_samplerate == 0) {\n if (2 * gfp.lowpassfreq > gfp.in_samplerate) {\n gfp.lowpassfreq = gfp.in_samplerate / 2;\n }\n gfp.out_samplerate = optimum_samplefreq(gfp.lowpassfreq | 0,\n gfp.in_samplerate);\n }\n\n gfp.lowpassfreq = Math.min(20500, gfp.lowpassfreq);\n gfp.lowpassfreq = Math.min(gfp.out_samplerate / 2, gfp.lowpassfreq);\n\n if (gfp.VBR == VbrMode$2.vbr_off) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.brate);\n }\n if (gfp.VBR == VbrMode$2.vbr_abr) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.VBR_mean_bitrate_kbps);\n }\n\n /*\n * do not compute ReplayGain values and do not find the peak sample if\n * we can't store them\n */\n if (!gfp.bWriteVbrTag) {\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n gfc.findPeakSample = false;\n }\n gfc.findReplayGain = gfp.findReplayGain;\n gfc.decode_on_the_fly = gfp.decode_on_the_fly;\n\n if (gfc.decode_on_the_fly)\n gfc.findPeakSample = true;\n\n if (gfc.findReplayGain) {\n if (ga.InitGainAnalysis(gfc.rgdata, gfp.out_samplerate) == GainAnalysis.INIT_GAIN_ANALYSIS_ERROR) {\n gfp.internal_flags = null;\n return -6;\n }\n }\n\n if (gfc.decode_on_the_fly && !gfp.decode_only) {\n if (gfc.hip != null) {\n mpglib.hip_decode_exit(gfc.hip);\n }\n gfc.hip = mpglib.hip_decode_init();\n }\n\n gfc.mode_gr = gfp.out_samplerate <= 24000 ? 1 : 2;\n /*\n * Number of granules per frame\n */\n gfp.framesize = 576 * gfc.mode_gr;\n gfp.encoder_delay = Encoder_1.ENCDELAY;\n\n gfc.resample_ratio = gfp.in_samplerate / gfp.out_samplerate;\n\n /**\n *
\n         *  sample freq       bitrate     compression ratio\n         *     [kHz]      [kbps/channel]   for 16 bit input\n         *     44.1            56               12.6\n         *     44.1            64               11.025\n         *     44.1            80                8.82\n         *     22.05           24               14.7\n         *     22.05           32               11.025\n         *     22.05           40                8.82\n         *     16              16               16.0\n         *     16              24               10.667\n         * 
\n */\n /**\n *
\n         *  For VBR, take a guess at the compression_ratio.\n         *  For example:\n         *\n         *    VBR_q    compression     like\n         *     -        4.4         320 kbps/44 kHz\n         *   0...1      5.5         256 kbps/44 kHz\n         *     2        7.3         192 kbps/44 kHz\n         *     4        8.8         160 kbps/44 kHz\n         *     6       11           128 kbps/44 kHz\n         *     9       14.7          96 kbps\n         *\n         *  for lower bitrates, downsample with --resample\n         * 
\n */\n switch (gfp.VBR) {\n case VbrMode$2.vbr_mt:\n case VbrMode$2.vbr_rh:\n case VbrMode$2.vbr_mtrh:\n {\n /* numbers are a bit strange, but they determine the lowpass value */\n var cmp = [5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14,\n 15, 16.5];\n gfp.compression_ratio = cmp[gfp.VBR_q];\n }\n break;\n case VbrMode$2.vbr_abr:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.VBR_mean_bitrate_kbps);\n break;\n default:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.brate);\n break;\n }\n\n /*\n * mode = -1 (not set by user) or mode = MONO (because of only 1 input\n * channel). If mode has not been set, then select J-STEREO\n */\n if (gfp.mode == MPEGMode.NOT_SET) {\n gfp.mode = MPEGMode.JOINT_STEREO;\n }\n\n /* apply user driven high pass filter */\n if (gfp.highpassfreq > 0) {\n gfc.highpass1 = 2. * gfp.highpassfreq;\n\n if (gfp.highpasswidth >= 0)\n gfc.highpass2 = 2. * (gfp.highpassfreq + gfp.highpasswidth);\n else\n /* 0% above on default */\n gfc.highpass2 = (1 + 0.00) * 2. * gfp.highpassfreq;\n\n gfc.highpass1 /= gfp.out_samplerate;\n gfc.highpass2 /= gfp.out_samplerate;\n } else {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n }\n /* apply user driven low pass filter */\n if (gfp.lowpassfreq > 0) {\n gfc.lowpass2 = 2. * gfp.lowpassfreq;\n if (gfp.lowpasswidth >= 0) {\n gfc.lowpass1 = 2. * (gfp.lowpassfreq - gfp.lowpasswidth);\n if (gfc.lowpass1 < 0) /* has to be >= 0 */\n gfc.lowpass1 = 0;\n } else { /* 0% below on default */\n gfc.lowpass1 = (1 - 0.00) * 2. * gfp.lowpassfreq;\n }\n gfc.lowpass1 /= gfp.out_samplerate;\n gfc.lowpass2 /= gfp.out_samplerate;\n } else {\n gfc.lowpass1 = 0;\n gfc.lowpass2 = 0;\n }\n\n /**********************************************************************/\n /* compute info needed for polyphase filter (filter type==0, default) */\n /**********************************************************************/\n lame_init_params_ppflt(gfp);\n /*******************************************************\n * samplerate and bitrate index\n *******************************************************/\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n if (gfc.samplerate_index < 0) {\n gfp.internal_flags = null;\n return -1;\n }\n\n if (gfp.VBR == VbrMode$2.vbr_off) {\n if (gfp.free_format) {\n gfc.bitrate_index = 0;\n } else {\n gfp.brate = FindNearestBitrate(gfp.brate, gfp.version,\n gfp.out_samplerate);\n gfc.bitrate_index = BitrateIndex(gfp.brate, gfp.version,\n gfp.out_samplerate);\n if (gfc.bitrate_index <= 0) {\n gfp.internal_flags = null;\n return -1;\n }\n }\n } else {\n gfc.bitrate_index = 1;\n }\n\n /* for CBR, we will write an \"info\" tag. */\n\n if (gfp.analysis)\n gfp.bWriteVbrTag = false;\n\n /* some file options not allowed if output is: not specified or stdout */\n if (gfc.pinfo != null)\n gfp.bWriteVbrTag = false;\n /* disable Xing VBR tag */\n\n bs.init_bit_stream_w(gfc);\n\n var j = gfc.samplerate_index + (3 * gfp.version) + 6\n * (gfp.out_samplerate < 16000 ? 1 : 0);\n for (var i = 0; i < Encoder_1.SBMAX_l + 1; i++)\n gfc.scalefac_band.l[i] = qupvt.sfBandIndex[j].l[i];\n\n for (var i = 0; i < Encoder_1.PSFB21 + 1; i++) {\n var size = (gfc.scalefac_band.l[22] - gfc.scalefac_band.l[21])\n / Encoder_1.PSFB21;\n var start = gfc.scalefac_band.l[21] + i * size;\n gfc.scalefac_band.psfb21[i] = start;\n }\n gfc.scalefac_band.psfb21[Encoder_1.PSFB21] = 576;\n\n for (var i = 0; i < Encoder_1.SBMAX_s + 1; i++)\n gfc.scalefac_band.s[i] = qupvt.sfBandIndex[j].s[i];\n\n for (var i = 0; i < Encoder_1.PSFB12 + 1; i++) {\n var size = (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12])\n / Encoder_1.PSFB12;\n var start = gfc.scalefac_band.s[12] + i * size;\n gfc.scalefac_band.psfb12[i] = start;\n }\n gfc.scalefac_band.psfb12[Encoder_1.PSFB12] = 192;\n /* determine the mean bitrate for main data */\n if (gfp.version == 1) /* MPEG 1 */\n gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 17 : 4 + 32;\n else\n /* MPEG 2 */\n gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 9 : 4 + 17;\n\n if (gfp.error_protection)\n gfc.sideinfo_len += 2;\n\n lame_init_bitstream(gfp);\n\n gfc.Class_ID = LAME_ID;\n\n {\n var k;\n\n for (k = 0; k < 19; k++)\n gfc.nsPsy.pefirbuf[k] = 700 * gfc.mode_gr * gfc.channels_out;\n\n if (gfp.ATHtype == -1)\n gfp.ATHtype = 4;\n }\n assert$2(gfp.VBR_q <= 9);\n assert$2(gfp.VBR_q >= 0);\n\n switch (gfp.VBR) {\n\n case VbrMode$2.vbr_mt:\n gfp.VBR = VbrMode$2.vbr_mtrh;\n //$FALL-THROUGH$\n case VbrMode$2.vbr_mtrh:\n {\n if (gfp.useTemporal == null) {\n gfp.useTemporal = false;\n /* off by default for this VBR mode */\n }\n\n p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0);\n /**\n *
\n                 *   The newer VBR code supports only a limited\n                 *     subset of quality levels:\n                 *     9-5=5 are the same, uses x^3/4 quantization\n                 *   4-0=0 are the same  5 plus best huffman divide code\n                 * 
\n */\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n if (gfp.quality < 5)\n gfp.quality = 0;\n if (gfp.quality > 5)\n gfp.quality = 5;\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n /*\n * sfb21 extra only with MPEG-1 at higher sampling rates\n */\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = (gfp.out_samplerate > 44000);\n\n gfc.iteration_loop = new VBRNewIterationLoop(qu);\n break;\n\n }\n case VbrMode$2.vbr_rh:\n {\n\n p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0);\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n /*\n * sfb21 extra only with MPEG-1 at higher sampling rates\n */\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = (gfp.out_samplerate > 44000);\n\n /*\n * VBR needs at least the output of GPSYCHO, so we have to garantee\n * that by setting a minimum quality level, actually level 6 does\n * it. down to level 6\n */\n if (gfp.quality > 6)\n gfp.quality = 6;\n\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n\n gfc.iteration_loop = new VBROldIterationLoop(qu);\n break;\n }\n\n default: /* cbr/abr */\n {\n var vbrmode;\n\n /*\n * no sfb21 extra with CBR code\n */\n gfc.sfb21_extra = false;\n\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n\n vbrmode = gfp.VBR;\n if (vbrmode == VbrMode$2.vbr_off)\n gfp.VBR_mean_bitrate_kbps = gfp.brate;\n /* second, set parameters depending on bitrate */\n p.apply_preset(gfp, gfp.VBR_mean_bitrate_kbps, 0);\n gfp.VBR = vbrmode;\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n if (vbrmode == VbrMode$2.vbr_off) {\n gfc.iteration_loop = new CBRNewIterationLoop_1(qu);\n } else {\n gfc.iteration_loop = new ABRIterationLoop(qu);\n }\n break;\n }\n }\n assert$2(gfp.scale >= 0);\n /* initialize default values common for all modes */\n\n if (gfp.VBR != VbrMode$2.vbr_off) { /* choose a min/max bitrate for VBR */\n /* if the user didn't specify VBR_max_bitrate: */\n gfc.VBR_min_bitrate = 1;\n /*\n * default: allow 8 kbps (MPEG-2) or 32 kbps (MPEG-1)\n */\n gfc.VBR_max_bitrate = 14;\n /*\n * default: allow 160 kbps (MPEG-2) or 320 kbps (MPEG-1)\n */\n if (gfp.out_samplerate < 16000)\n gfc.VBR_max_bitrate = 8;\n /* default: allow 64 kbps (MPEG-2.5) */\n if (gfp.VBR_min_bitrate_kbps != 0) {\n gfp.VBR_min_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_min_bitrate_kbps, gfp.version,\n gfp.out_samplerate);\n gfc.VBR_min_bitrate = BitrateIndex(gfp.VBR_min_bitrate_kbps,\n gfp.version, gfp.out_samplerate);\n if (gfc.VBR_min_bitrate < 0)\n return -1;\n }\n if (gfp.VBR_max_bitrate_kbps != 0) {\n gfp.VBR_max_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_max_bitrate_kbps, gfp.version,\n gfp.out_samplerate);\n gfc.VBR_max_bitrate = BitrateIndex(gfp.VBR_max_bitrate_kbps,\n gfp.version, gfp.out_samplerate);\n if (gfc.VBR_max_bitrate < 0)\n return -1;\n }\n gfp.VBR_min_bitrate_kbps = Tables_1.bitrate_table[gfp.version][gfc.VBR_min_bitrate];\n gfp.VBR_max_bitrate_kbps = Tables_1.bitrate_table[gfp.version][gfc.VBR_max_bitrate];\n gfp.VBR_mean_bitrate_kbps = Math.min(\n Tables_1.bitrate_table[gfp.version][gfc.VBR_max_bitrate],\n gfp.VBR_mean_bitrate_kbps);\n gfp.VBR_mean_bitrate_kbps = Math.max(\n Tables_1.bitrate_table[gfp.version][gfc.VBR_min_bitrate],\n gfp.VBR_mean_bitrate_kbps);\n }\n\n /* just another daily changing developer switch */\n if (gfp.tune) {\n gfc.PSY.mask_adjust += gfp.tune_value_a;\n gfc.PSY.mask_adjust_short += gfp.tune_value_a;\n }\n\n /* initialize internal qval settings */\n lame_init_qval(gfp);\n assert$2(gfp.scale >= 0);\n /*\n * automatic ATH adjustment on\n */\n if (gfp.athaa_type < 0)\n gfc.ATH.useAdjust = 3;\n else\n gfc.ATH.useAdjust = gfp.athaa_type;\n\n /* initialize internal adaptive ATH settings -jd */\n gfc.ATH.aaSensitivityP = Math.pow(10.0, gfp.athaa_sensitivity\n / -10.0);\n\n if (gfp.short_blocks == null) {\n gfp.short_blocks = ShortBlock$2.short_block_allowed;\n }\n\n /*\n * Note Jan/2003: Many hardware decoders cannot handle short blocks in\n * regular stereo mode unless they are coupled (same type in both\n * channels) it is a rare event (1 frame per min. or so) that LAME would\n * use uncoupled short blocks, so lets turn them off until we decide how\n * to handle this. No other encoders allow uncoupled short blocks, even\n * though it is in the standard.\n */\n /*\n * rh 20040217: coupling makes no sense for mono and dual-mono streams\n */\n if (gfp.short_blocks == ShortBlock$2.short_block_allowed\n && (gfp.mode == MPEGMode.JOINT_STEREO || gfp.mode == MPEGMode.STEREO)) {\n gfp.short_blocks = ShortBlock$2.short_block_coupled;\n }\n\n if (gfp.quant_comp < 0)\n gfp.quant_comp = 1;\n if (gfp.quant_comp_short < 0)\n gfp.quant_comp_short = 0;\n\n if (gfp.msfix < 0)\n gfp.msfix = 0;\n\n /* select psychoacoustic model */\n gfp.exp_nspsytune = gfp.exp_nspsytune | 1;\n\n if (gfp.internal_flags.nsPsy.attackthre < 0)\n gfp.internal_flags.nsPsy.attackthre = PsyModel_1.NSATTACKTHRE;\n if (gfp.internal_flags.nsPsy.attackthre_s < 0)\n gfp.internal_flags.nsPsy.attackthre_s = PsyModel_1.NSATTACKTHRE_S;\n\n assert$2(gfp.scale >= 0);\n\n if (gfp.scale < 0)\n gfp.scale = 1;\n\n if (gfp.ATHtype < 0)\n gfp.ATHtype = 4;\n\n if (gfp.ATHcurve < 0)\n gfp.ATHcurve = 4;\n\n if (gfp.athaa_loudapprox < 0)\n gfp.athaa_loudapprox = 2;\n\n if (gfp.interChRatio < 0)\n gfp.interChRatio = 0;\n\n if (gfp.useTemporal == null)\n gfp.useTemporal = true;\n /* on by default */\n\n /*\n * padding method as described in\n * \"MPEG-Layer3 / Bitstream Syntax and Decoding\" by Martin Sieler, Ralph\n * Sperschneider\n *\n * note: there is no padding for the very first frame\n *\n * Robert Hegemann 2000-06-22\n */\n gfc.slot_lag = gfc.frac_SpF = 0;\n if (gfp.VBR == VbrMode$2.vbr_off)\n gfc.slot_lag = gfc.frac_SpF = (((gfp.version + 1) * 72000 * gfp.brate) % gfp.out_samplerate) | 0;\n\n qupvt.iteration_init(gfp);\n psy.psymodel_init(gfp);\n assert$2(gfp.scale >= 0);\n return 0;\n };\n\n function update_inbuffer_size(gfc, nsamples) {\n if (gfc.in_buffer_0 == null || gfc.in_buffer_nsamples < nsamples) {\n gfc.in_buffer_0 = new_float$2(nsamples);\n gfc.in_buffer_1 = new_float$2(nsamples);\n gfc.in_buffer_nsamples = nsamples;\n }\n }\n\n this.lame_encode_flush = function (gfp, mp3buffer, mp3bufferPos, mp3buffer_size) {\n var gfc = gfp.internal_flags;\n var buffer = new_short_n$1([2, 1152]);\n var imp3 = 0, mp3count, mp3buffer_size_remaining;\n\n /*\n * we always add POSTDELAY=288 padding to make sure granule with real\n * data can be complety decoded (because of 50% overlap with next\n * granule\n */\n var end_padding;\n var frames_left;\n var samples_to_encode = gfc.mf_samples_to_encode - Encoder_1.POSTDELAY;\n var mf_needed = calcNeeded(gfp);\n\n /* Was flush already called? */\n if (gfc.mf_samples_to_encode < 1) {\n return 0;\n }\n mp3count = 0;\n\n if (gfp.in_samplerate != gfp.out_samplerate) {\n /*\n * delay due to resampling; needs to be fixed, if resampling code\n * gets changed\n */\n samples_to_encode += 16. * gfp.out_samplerate / gfp.in_samplerate;\n }\n end_padding = gfp.framesize - (samples_to_encode % gfp.framesize);\n if (end_padding < 576)\n end_padding += gfp.framesize;\n gfp.encoder_padding = end_padding;\n\n frames_left = (samples_to_encode + end_padding) / gfp.framesize;\n\n /*\n * send in a frame of 0 padding until all internal sample buffers are\n * flushed\n */\n while (frames_left > 0 && imp3 >= 0) {\n var bunch = mf_needed - gfc.mf_size;\n var frame_num = gfp.frameNum;\n\n bunch *= gfp.in_samplerate;\n bunch /= gfp.out_samplerate;\n if (bunch > 1152)\n bunch = 1152;\n if (bunch < 1)\n bunch = 1;\n\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n imp3 = this.lame_encode_buffer(gfp, buffer[0], buffer[1], bunch,\n mp3buffer, mp3bufferPos, mp3buffer_size_remaining);\n\n mp3bufferPos += imp3;\n mp3count += imp3;\n frames_left -= (frame_num != gfp.frameNum) ? 1 : 0;\n }\n /*\n * Set gfc.mf_samples_to_encode to 0, so we may detect and break loops\n * calling it more than once in a row.\n */\n gfc.mf_samples_to_encode = 0;\n\n if (imp3 < 0) {\n /* some type of fatal error */\n return imp3;\n }\n\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n /* mp3 related stuff. bit buffer might still contain some mp3 data */\n bs.flush_bitstream(gfp);\n imp3 = bs.copy_buffer(gfc, mp3buffer, mp3bufferPos,\n mp3buffer_size_remaining, 1);\n if (imp3 < 0) {\n /* some type of fatal error */\n return imp3;\n }\n mp3bufferPos += imp3;\n mp3count += imp3;\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n if (gfp.write_id3tag_automatic) {\n /* write a id3 tag to the bitstream */\n id3.id3tag_write_v1(gfp);\n\n imp3 = bs.copy_buffer(gfc, mp3buffer, mp3bufferPos,\n mp3buffer_size_remaining, 0);\n\n if (imp3 < 0) {\n return imp3;\n }\n mp3count += imp3;\n }\n return mp3count;\n };\n\n this.lame_encode_buffer = function (gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var in_buffer = [null, null];\n\n if (gfc.Class_ID != LAME_ID)\n return -3;\n\n if (nsamples == 0)\n return 0;\n\n update_inbuffer_size(gfc, nsamples);\n\n in_buffer[0] = gfc.in_buffer_0;\n in_buffer[1] = gfc.in_buffer_1;\n\n /* make a copy of input buffer, changing type to sample_t */\n for (var i = 0; i < nsamples; i++) {\n in_buffer[0][i] = buffer_l[i];\n if (gfc.channels_in > 1)\n in_buffer[1][i] = buffer_r[i];\n }\n\n return lame_encode_buffer_sample(gfp, in_buffer[0], in_buffer[1],\n nsamples, mp3buf, mp3bufPos, mp3buf_size);\n };\n\n function calcNeeded(gfp) {\n var mf_needed = Encoder_1.BLKSIZE + gfp.framesize - Encoder_1.FFTOFFSET;\n /*\n * amount needed for FFT\n */\n mf_needed = Math.max(mf_needed, 512 + gfp.framesize - 32);\n assert$2(LameInternalFlags_1.MFSIZE >= mf_needed);\n\n return mf_needed;\n }\n\n function lame_encode_buffer_sample(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var mp3size = 0, ret, i, ch, mf_needed;\n var mp3out;\n var mfbuf = [null, null];\n var in_buffer = [null, null];\n\n if (gfc.Class_ID != LAME_ID)\n return -3;\n\n if (nsamples == 0)\n return 0;\n\n /* copy out any tags that may have been written into bitstream */\n mp3out = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 0);\n if (mp3out < 0)\n return mp3out;\n /* not enough buffer space */\n mp3bufPos += mp3out;\n mp3size += mp3out;\n\n in_buffer[0] = buffer_l;\n in_buffer[1] = buffer_r;\n\n /* Apply user defined re-scaling */\n\n /* user selected scaling of the samples */\n if (BitStream_1.NEQ(gfp.scale, 0) && BitStream_1.NEQ(gfp.scale, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale;\n if (gfc.channels_out == 2)\n in_buffer[1][i] *= gfp.scale;\n }\n }\n\n /* user selected scaling of the channel 0 (left) samples */\n if (BitStream_1.NEQ(gfp.scale_left, 0)\n && BitStream_1.NEQ(gfp.scale_left, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale_left;\n }\n }\n\n /* user selected scaling of the channel 1 (right) samples */\n if (BitStream_1.NEQ(gfp.scale_right, 0)\n && BitStream_1.NEQ(gfp.scale_right, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[1][i] *= gfp.scale_right;\n }\n }\n\n /* Downsample to Mono if 2 channels in and 1 channel out */\n if (gfp.num_channels == 2 && gfc.channels_out == 1) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] = 0.5 * ( in_buffer[0][i] + in_buffer[1][i]);\n in_buffer[1][i] = 0.0;\n }\n }\n\n mf_needed = calcNeeded(gfp);\n\n mfbuf[0] = gfc.mfbuf[0];\n mfbuf[1] = gfc.mfbuf[1];\n\n var in_bufferPos = 0;\n while (nsamples > 0) {\n var in_buffer_ptr = [null, null];\n var n_in = 0;\n /* number of input samples processed with fill_buffer */\n var n_out = 0;\n /* number of samples output with fill_buffer */\n /* n_in <> n_out if we are resampling */\n\n in_buffer_ptr[0] = in_buffer[0];\n in_buffer_ptr[1] = in_buffer[1];\n /* copy in new samples into mfbuf, with resampling */\n var inOut = new InOut();\n fill_buffer(gfp, mfbuf, in_buffer_ptr, in_bufferPos, nsamples,\n inOut);\n n_in = inOut.n_in;\n n_out = inOut.n_out;\n\n /* compute ReplayGain of resampled input if requested */\n if (gfc.findReplayGain && !gfc.decode_on_the_fly)\n if (ga.AnalyzeSamples(gfc.rgdata, mfbuf[0], gfc.mf_size,\n mfbuf[1], gfc.mf_size, n_out, gfc.channels_out) == GainAnalysis.GAIN_ANALYSIS_ERROR)\n return -6;\n\n /* update in_buffer counters */\n nsamples -= n_in;\n in_bufferPos += n_in;\n if (gfc.channels_out == 2)\n ;// in_bufferPos += n_in;\n\n /* update mfbuf[] counters */\n gfc.mf_size += n_out;\n assert$2(gfc.mf_size <= LameInternalFlags_1.MFSIZE);\n\n /*\n * lame_encode_flush may have set gfc.mf_sample_to_encode to 0 so we\n * have to reinitialize it here when that happened.\n */\n if (gfc.mf_samples_to_encode < 1) {\n gfc.mf_samples_to_encode = Encoder_1.ENCDELAY + Encoder_1.POSTDELAY;\n }\n gfc.mf_samples_to_encode += n_out;\n\n if (gfc.mf_size >= mf_needed) {\n /* encode the frame. */\n /* mp3buf = pointer to current location in buffer */\n /* mp3buf_size = size of original mp3 output buffer */\n /* = 0 if we should not worry about the */\n /* buffer size because calling program is */\n /* to lazy to compute it */\n /* mp3size = size of data written to buffer so far */\n /* mp3buf_size-mp3size = amount of space avalable */\n\n var buf_size = mp3buf_size - mp3size;\n if (mp3buf_size == 0)\n buf_size = 0;\n\n ret = lame_encode_frame(gfp, mfbuf[0], mfbuf[1], mp3buf,\n mp3bufPos, buf_size);\n\n if (ret < 0)\n return ret;\n mp3bufPos += ret;\n mp3size += ret;\n\n /* shift out old samples */\n gfc.mf_size -= gfp.framesize;\n gfc.mf_samples_to_encode -= gfp.framesize;\n for (ch = 0; ch < gfc.channels_out; ch++)\n for (i = 0; i < gfc.mf_size; i++)\n mfbuf[ch][i] = mfbuf[ch][i + gfp.framesize];\n }\n }\n assert$2(nsamples == 0);\n\n return mp3size;\n }\n\n function lame_encode_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var ret = self.enc.lame_encode_mp3_frame(gfp, inbuf_l, inbuf_r, mp3buf,\n mp3bufPos, mp3buf_size);\n gfp.frameNum++;\n return ret;\n }\n\n function InOut() {\n this.n_in = 0;\n this.n_out = 0;\n }\n\n\n function NumUsed() {\n this.num_used = 0;\n }\n\n /**\n * Greatest common divisor.\n *

\n * Joint work of Euclid and M. Hendry\n */\n function gcd(i, j) {\n return j != 0 ? gcd(j, i % j) : i;\n }\n\n /**\n * Resampling via FIR filter, blackman window.\n */\n function blackman(x, fcn, l) {\n /*\n * This algorithm from: SIGNAL PROCESSING ALGORITHMS IN FORTRAN AND C\n * S.D. Stearns and R.A. David, Prentice-Hall, 1992\n */\n var wcn = (Math.PI * fcn);\n\n x /= l;\n if (x < 0)\n x = 0;\n if (x > 1)\n x = 1;\n var x2 = x - .5;\n\n var bkwn = 0.42 - 0.5 * Math.cos(2 * x * Math.PI) + 0.08 * Math.cos(4 * x * Math.PI);\n if (Math.abs(x2) < 1e-9)\n return (wcn / Math.PI);\n else\n return (bkwn * Math.sin(l * wcn * x2) / (Math.PI * l * x2));\n }\n\n function fill_buffer_resample(gfp, outbuf, outbufPos, desired_len, inbuf, in_bufferPos, len, num_used, ch) {\n var gfc = gfp.internal_flags;\n var i, j = 0, k;\n /* number of convolution functions to pre-compute */\n var bpc = gfp.out_samplerate\n / gcd(gfp.out_samplerate, gfp.in_samplerate);\n if (bpc > LameInternalFlags_1.BPC)\n bpc = LameInternalFlags_1.BPC;\n\n var intratio = (Math.abs(gfc.resample_ratio\n - Math.floor(.5 + gfc.resample_ratio)) < .0001) ? 1 : 0;\n var fcn = 1.00 / gfc.resample_ratio;\n if (fcn > 1.00)\n fcn = 1.00;\n var filter_l = 31;\n if (0 == filter_l % 2)\n --filter_l;\n /* must be odd */\n filter_l += intratio;\n /* unless resample_ratio=int, it must be even */\n\n var BLACKSIZE = filter_l + 1;\n /* size of data needed for FIR */\n\n if (gfc.fill_buffer_resample_init == 0) {\n gfc.inbuf_old[0] = new_float$2(BLACKSIZE);\n gfc.inbuf_old[1] = new_float$2(BLACKSIZE);\n for (i = 0; i <= 2 * bpc; ++i)\n gfc.blackfilt[i] = new_float$2(BLACKSIZE);\n\n gfc.itime[0] = 0;\n gfc.itime[1] = 0;\n\n /* precompute blackman filter coefficients */\n for (j = 0; j <= 2 * bpc; j++) {\n var sum = 0.;\n var offset = (j - bpc) / (2. * bpc);\n for (i = 0; i <= filter_l; i++)\n sum += gfc.blackfilt[j][i] = blackman(i - offset, fcn,\n filter_l);\n for (i = 0; i <= filter_l; i++)\n gfc.blackfilt[j][i] /= sum;\n }\n gfc.fill_buffer_resample_init = 1;\n }\n\n var inbuf_old = gfc.inbuf_old[ch];\n\n /* time of j'th element in inbuf = itime + j/ifreq; */\n /* time of k'th element in outbuf = j/ofreq */\n for (k = 0; k < desired_len; k++) {\n var time0;\n var joff;\n\n time0 = k * gfc.resample_ratio;\n /* time of k'th output sample */\n j = 0 | Math.floor(time0 - gfc.itime[ch]);\n\n /* check if we need more input data */\n if ((filter_l + j - filter_l / 2) >= len)\n break;\n\n /* blackman filter. by default, window centered at j+.5(filter_l%2) */\n /* but we want a window centered at time0. */\n var offset = (time0 - gfc.itime[ch] - (j + .5 * (filter_l % 2)));\n assert$2(Math.abs(offset) <= .501);\n\n /* find the closest precomputed window for this offset: */\n joff = 0 | Math.floor((offset * 2 * bpc) + bpc + .5);\n var xvalue = 0.;\n for (i = 0; i <= filter_l; ++i) {\n var j2 = i + j - filter_l / 2;\n var y;\n assert$2(j2 < len);\n assert$2(j2 + BLACKSIZE >= 0);\n y = (j2 < 0) ? inbuf_old[BLACKSIZE + j2] : inbuf[in_bufferPos\n + j2];\n xvalue += y * gfc.blackfilt[joff][i];\n }\n outbuf[outbufPos + k] = xvalue;\n }\n\n /* k = number of samples added to outbuf */\n /* last k sample used data from [j-filter_l/2,j+filter_l-filter_l/2] */\n\n /* how many samples of input data were used: */\n num_used.num_used = Math.min(len, filter_l + j - filter_l / 2);\n\n /*\n * adjust our input time counter. Incriment by the number of samples\n * used, then normalize so that next output sample is at time 0, next\n * input buffer is at time itime[ch]\n */\n gfc.itime[ch] += num_used.num_used - k * gfc.resample_ratio;\n\n /* save the last BLACKSIZE samples into the inbuf_old buffer */\n if (num_used.num_used >= BLACKSIZE) {\n for (i = 0; i < BLACKSIZE; i++)\n inbuf_old[i] = inbuf[in_bufferPos + num_used.num_used + i\n - BLACKSIZE];\n } else {\n /* shift in num_used.num_used samples into inbuf_old */\n var n_shift = BLACKSIZE - num_used.num_used;\n /*\n * number of samples to\n * shift\n */\n\n /*\n * shift n_shift samples by num_used.num_used, to make room for the\n * num_used new samples\n */\n for (i = 0; i < n_shift; ++i)\n inbuf_old[i] = inbuf_old[i + num_used.num_used];\n\n /* shift in the num_used.num_used samples */\n for (j = 0; i < BLACKSIZE; ++i, ++j)\n inbuf_old[i] = inbuf[in_bufferPos + j];\n\n assert$2(j == num_used.num_used);\n }\n return k;\n /* return the number samples created at the new samplerate */\n }\n\n function fill_buffer(gfp, mfbuf, in_buffer, in_bufferPos, nsamples, io) {\n var gfc = gfp.internal_flags;\n\n /* copy in new samples into mfbuf, with resampling if necessary */\n if ((gfc.resample_ratio < .9999) || (gfc.resample_ratio > 1.0001)) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var numUsed = new NumUsed();\n io.n_out = fill_buffer_resample(gfp, mfbuf[ch], gfc.mf_size,\n gfp.framesize, in_buffer[ch], in_bufferPos, nsamples,\n numUsed, ch);\n io.n_in = numUsed.num_used;\n }\n } else {\n io.n_out = Math.min(gfp.framesize, nsamples);\n io.n_in = io.n_out;\n for (var i = 0; i < io.n_out; ++i) {\n mfbuf[0][gfc.mf_size + i] = in_buffer[0][in_bufferPos + i];\n if (gfc.channels_out == 2)\n mfbuf[1][gfc.mf_size + i] = in_buffer[1][in_bufferPos + i];\n }\n }\n }\n\n}\n\nvar Lame_1 = Lame$1;\n\nvar VbrMode$20 = common.VbrMode;\nfunction Presets$1() {\n function VBRPresets(qual, comp, compS,\n y, shThreshold, shThresholdS,\n adj, adjShort, lower,\n curve, sens, inter,\n joint, mod, fix) {\n this.vbr_q = qual;\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.expY = y;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.masking_adj = adj;\n this.masking_adj_short = adjShort;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.ath_sensitivity = sens;\n this.interch = inter;\n this.safejoint = joint;\n this.sfb21mod = mod;\n this.msfix = fix;\n }\n\n function ABRPresets(kbps, comp, compS,\n joint, fix, shThreshold,\n shThresholdS, bass, sc,\n mask, lower, curve,\n interCh, sfScale) {\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.safejoint = joint;\n this.nsmsfix = fix;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.nsbass = bass;\n this.scale = sc;\n this.masking_adj = mask;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.interch = interCh;\n this.sfscale = sfScale;\n }\n\n var lame;\n\n this.setModules = function (_lame) {\n lame = _lame;\n };\n\n /**\n *

\n     * Switch mappings for VBR mode VBR_RH\n     *             vbr_q  qcomp_l  qcomp_s  expY  st_lrm   st_s  mask adj_l  adj_s  ath_lower  ath_curve  ath_sens  interChR  safejoint sfb21mod  msfix\n     * 
\n */\n var vbr_old_switch_map = [\n new VBRPresets(0, 9, 9, 0, 5.20, 125.0, -4.2, -6.3, 4.8, 1, 0, 0, 2, 21, 0.97),\n new VBRPresets(1, 9, 9, 0, 5.30, 125.0, -3.6, -5.6, 4.5, 1.5, 0, 0, 2, 21, 1.35),\n new VBRPresets(2, 9, 9, 0, 5.60, 125.0, -2.2, -3.5, 2.8, 2, 0, 0, 2, 21, 1.49),\n new VBRPresets(3, 9, 9, 1, 5.80, 130.0, -1.8, -2.8, 2.6, 3, -4, 0, 2, 20, 1.64),\n new VBRPresets(4, 9, 9, 1, 6.00, 135.0, -0.7, -1.1, 1.1, 3.5, -8, 0, 2, 0, 1.79),\n new VBRPresets(5, 9, 9, 1, 6.40, 140.0, 0.5, 0.4, -7.5, 4, -12, 0.0002, 0, 0, 1.95),\n new VBRPresets(6, 9, 9, 1, 6.60, 145.0, 0.67, 0.65, -14.7, 6.5, -19, 0.0004, 0, 0, 2.30),\n new VBRPresets(7, 9, 9, 1, 6.60, 145.0, 0.8, 0.75, -19.7, 8, -22, 0.0006, 0, 0, 2.70),\n new VBRPresets(8, 9, 9, 1, 6.60, 145.0, 1.2, 1.15, -27.5, 10, -23, 0.0007, 0, 0, 0),\n new VBRPresets(9, 9, 9, 1, 6.60, 145.0, 1.6, 1.6, -36, 11, -25, 0.0008, 0, 0, 0),\n new VBRPresets(10, 9, 9, 1, 6.60, 145.0, 2.0, 2.0, -36, 12, -25, 0.0008, 0, 0, 0)\n ];\n\n /**\n *
\n     *                 vbr_q  qcomp_l  qcomp_s  expY  st_lrm   st_s  mask adj_l  adj_s  ath_lower  ath_curve  ath_sens  interChR  safejoint sfb21mod  msfix\n     * 
\n */\n var vbr_psy_switch_map = [\n new VBRPresets(0, 9, 9, 0, 4.20, 25.0, -7.0, -4.0, 7.5, 1, 0, 0, 2, 26, 0.97),\n new VBRPresets(1, 9, 9, 0, 4.20, 25.0, -5.6, -3.6, 4.5, 1.5, 0, 0, 2, 21, 1.35),\n new VBRPresets(2, 9, 9, 0, 4.20, 25.0, -4.4, -1.8, 2, 2, 0, 0, 2, 18, 1.49),\n new VBRPresets(3, 9, 9, 1, 4.20, 25.0, -3.4, -1.25, 1.1, 3, -4, 0, 2, 15, 1.64),\n new VBRPresets(4, 9, 9, 1, 4.20, 25.0, -2.2, 0.1, 0, 3.5, -8, 0, 2, 0, 1.79),\n new VBRPresets(5, 9, 9, 1, 4.20, 25.0, -1.0, 1.65, -7.7, 4, -12, 0.0002, 0, 0, 1.95),\n new VBRPresets(6, 9, 9, 1, 4.20, 25.0, -0.0, 2.47, -7.7, 6.5, -19, 0.0004, 0, 0, 2),\n new VBRPresets(7, 9, 9, 1, 4.20, 25.0, 0.5, 2.0, -14.5, 8, -22, 0.0006, 0, 0, 2),\n new VBRPresets(8, 9, 9, 1, 4.20, 25.0, 1.0, 2.4, -22.0, 10, -23, 0.0007, 0, 0, 2),\n new VBRPresets(9, 9, 9, 1, 4.20, 25.0, 1.5, 2.95, -30.0, 11, -25, 0.0008, 0, 0, 2),\n new VBRPresets(10, 9, 9, 1, 4.20, 25.0, 2.0, 2.95, -36.0, 12, -30, 0.0008, 0, 0, 2)\n ];\n\n function apply_vbr_preset(gfp, a, enforce) {\n var vbr_preset = gfp.VBR == VbrMode$20.vbr_rh ? vbr_old_switch_map\n : vbr_psy_switch_map;\n\n var x = gfp.VBR_q_frac;\n var p = vbr_preset[a];\n var q = vbr_preset[a + 1];\n var set = p;\n\n // NOOP(vbr_q);\n // NOOP(quant_comp);\n // NOOP(quant_comp_s);\n // NOOP(expY);\n p.st_lrm = p.st_lrm + x * (q.st_lrm - p.st_lrm);\n // LERP(st_lrm);\n p.st_s = p.st_s + x * (q.st_s - p.st_s);\n // LERP(st_s);\n p.masking_adj = p.masking_adj + x * (q.masking_adj - p.masking_adj);\n // LERP(masking_adj);\n p.masking_adj_short = p.masking_adj_short + x\n * (q.masking_adj_short - p.masking_adj_short);\n // LERP(masking_adj_short);\n p.ath_lower = p.ath_lower + x * (q.ath_lower - p.ath_lower);\n // LERP(ath_lower);\n p.ath_curve = p.ath_curve + x * (q.ath_curve - p.ath_curve);\n // LERP(ath_curve);\n p.ath_sensitivity = p.ath_sensitivity + x\n * (q.ath_sensitivity - p.ath_sensitivity);\n // LERP(ath_sensitivity);\n p.interch = p.interch + x * (q.interch - p.interch);\n // LERP(interch);\n // NOOP(safejoint);\n // NOOP(sfb21mod);\n p.msfix = p.msfix + x * (q.msfix - p.msfix);\n // LERP(msfix);\n\n lame_set_VBR_q(gfp, set.vbr_q);\n\n if (enforce != 0)\n gfp.quant_comp = set.quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0))\n gfp.quant_comp = set.quant_comp;\n // SET_OPTION(quant_comp, set.quant_comp, -1);\n if (enforce != 0)\n gfp.quant_comp_short = set.quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0))\n gfp.quant_comp_short = set.quant_comp_s;\n // SET_OPTION(quant_comp_short, set.quant_comp_s, -1);\n if (set.expY != 0) {\n gfp.experimentalY = set.expY != 0;\n }\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre = set.st_lrm;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre = set.st_lrm;\n // SET_OPTION(short_threshold_lrm, set.st_lrm, -1);\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre_s = set.st_s;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre_s = set.st_s;\n // SET_OPTION(short_threshold_s, set.st_s, -1);\n if (enforce != 0)\n gfp.maskingadjust = set.masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0))\n gfp.maskingadjust = set.masking_adj;\n // SET_OPTION(maskingadjust, set.masking_adj, 0);\n if (enforce != 0)\n gfp.maskingadjust_short = set.masking_adj_short;\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = set.masking_adj_short;\n // SET_OPTION(maskingadjust_short, set.masking_adj_short, 0);\n if (enforce != 0)\n gfp.ATHlower = -set.ath_lower / 10.0;\n else if (!(Math.abs((-gfp.ATHlower * 10.0) - 0) > 0))\n gfp.ATHlower = -set.ath_lower / 10.0;\n // SET_OPTION(ATHlower, set.ath_lower, 0);\n if (enforce != 0)\n gfp.ATHcurve = set.ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n gfp.ATHcurve = set.ath_curve;\n // SET_OPTION(ATHcurve, set.ath_curve, -1);\n if (enforce != 0)\n gfp.athaa_sensitivity = set.ath_sensitivity;\n else if (!(Math.abs(gfp.athaa_sensitivity - -1) > 0))\n gfp.athaa_sensitivity = set.ath_sensitivity;\n // SET_OPTION(athaa_sensitivity, set.ath_sensitivity, 0);\n if (set.interch > 0) {\n if (enforce != 0)\n gfp.interChRatio = set.interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0))\n gfp.interChRatio = set.interch;\n // SET_OPTION(interChRatio, set.interch, -1);\n }\n\n /* parameters for which there is no proper set/get interface */\n if (set.safejoint > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | set.safejoint;\n }\n if (set.sfb21mod > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | (set.sfb21mod << 20);\n }\n if (enforce != 0)\n gfp.msfix = set.msfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0))\n gfp.msfix = set.msfix;\n // SET_OPTION(msfix, set.msfix, -1);\n\n if (enforce == 0) {\n gfp.VBR_q = a;\n gfp.VBR_q_frac = x;\n }\n }\n\n /**\n *
\n     *  Switch mappings for ABR mode\n     *\n     *              kbps  quant q_s safejoint nsmsfix st_lrm  st_s  ns-bass scale   msk ath_lwr ath_curve  interch , sfscale\n     * 
\n */\n var abr_switch_map = [\n new ABRPresets(8, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -30.0, 11, 0.0012, 1), /* 8, impossible to use in stereo */\n new ABRPresets(16, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -25.0, 11, 0.0010, 1), /* 16 */\n new ABRPresets(24, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -20.0, 11, 0.0010, 1), /* 24 */\n new ABRPresets(32, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -15.0, 11, 0.0010, 1), /* 32 */\n new ABRPresets(40, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 40 */\n new ABRPresets(48, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 48 */\n new ABRPresets(56, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -6.0, 11, 0.0008, 1), /* 56 */\n new ABRPresets(64, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -2.0, 11, 0.0008, 1), /* 64 */\n new ABRPresets(80, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, .0, 8, 0.0007, 1), /* 80 */\n new ABRPresets(96, 9, 9, 0, 2.50, 6.60, 145, 0, 0.95, 0, 1.0, 5.5, 0.0006, 1), /* 96 */\n new ABRPresets(112, 9, 9, 0, 2.25, 6.60, 145, 0, 0.95, 0, 2.0, 4.5, 0.0005, 1), /* 112 */\n new ABRPresets(128, 9, 9, 0, 1.95, 6.40, 140, 0, 0.95, 0, 3.0, 4, 0.0002, 1), /* 128 */\n new ABRPresets(160, 9, 9, 1, 1.79, 6.00, 135, 0, 0.95, -2, 5.0, 3.5, 0, 1), /* 160 */\n new ABRPresets(192, 9, 9, 1, 1.49, 5.60, 125, 0, 0.97, -4, 7.0, 3, 0, 0), /* 192 */\n new ABRPresets(224, 9, 9, 1, 1.25, 5.20, 125, 0, 0.98, -6, 9.0, 2, 0, 0), /* 224 */\n new ABRPresets(256, 9, 9, 1, 0.97, 5.20, 125, 0, 1.00, -8, 10.0, 1, 0, 0), /* 256 */\n new ABRPresets(320, 9, 9, 1, 0.90, 5.20, 125, 0, 1.00, -10, 12.0, 0, 0, 0) /* 320 */\n ];\n\n function apply_abr_preset(gfp, preset, enforce) {\n /* Variables for the ABR stuff */\n var actual_bitrate = preset;\n\n var r = lame.nearestBitrateFullIndex(preset);\n\n gfp.VBR = VbrMode$20.vbr_abr;\n gfp.VBR_mean_bitrate_kbps = actual_bitrate;\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n if (gfp.VBR_mean_bitrate_kbps > 320) {\n gfp.disable_reservoir = true;\n }\n\n /* parameters for which there is no proper set/get interface */\n if (abr_switch_map[r].safejoint > 0)\n gfp.exp_nspsytune = gfp.exp_nspsytune | 2;\n /* safejoint */\n\n if (abr_switch_map[r].sfscale > 0) {\n gfp.internal_flags.noise_shaping = 2;\n }\n /* ns-bass tweaks */\n if (Math.abs(abr_switch_map[r].nsbass) > 0) {\n var k = (int)(abr_switch_map[r].nsbass * 4);\n if (k < 0)\n k += 64;\n gfp.exp_nspsytune = gfp.exp_nspsytune | (k << 2);\n }\n\n if (enforce != 0)\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0))\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n // SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1);\n if (enforce != 0)\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0))\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n // SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1);\n\n if (enforce != 0)\n gfp.msfix = abr_switch_map[r].nsmsfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0))\n gfp.msfix = abr_switch_map[r].nsmsfix;\n // SET_OPTION(msfix, abr_switch_map[r].nsmsfix, -1);\n\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n // SET_OPTION(short_threshold_lrm, abr_switch_map[r].st_lrm, -1);\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n // SET_OPTION(short_threshold_s, abr_switch_map[r].st_s, -1);\n\n /*\n * ABR seems to have big problems with clipping, especially at low\n * bitrates\n */\n /*\n * so we compensate for that here by using a scale value depending on\n * bitrate\n */\n if (enforce != 0)\n gfp.scale = abr_switch_map[r].scale;\n else if (!(Math.abs(gfp.scale - -1) > 0))\n gfp.scale = abr_switch_map[r].scale;\n // SET_OPTION(scale, abr_switch_map[r].scale, -1);\n\n if (enforce != 0)\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0))\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n // SET_OPTION(maskingadjust, abr_switch_map[r].masking_adj, 0);\n if (abr_switch_map[r].masking_adj > 0) {\n if (enforce != 0)\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9);\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9);\n // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj *\n // .9, 0);\n } else {\n if (enforce != 0)\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1);\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1);\n // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj *\n // 1.1, 0);\n }\n\n if (enforce != 0)\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.;\n else if (!(Math.abs((-gfp.ATHlower * 10.) - 0) > 0))\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.;\n // SET_OPTION(ATHlower, abr_switch_map[r].ath_lower, 0);\n if (enforce != 0)\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n // SET_OPTION(ATHcurve, abr_switch_map[r].ath_curve, -1);\n\n if (enforce != 0)\n gfp.interChRatio = abr_switch_map[r].interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0))\n gfp.interChRatio = abr_switch_map[r].interch;\n // SET_OPTION(interChRatio, abr_switch_map[r].interch, -1);\n\n return preset;\n }\n\n this.apply_preset = function(gfp, preset, enforce) {\n /* translate legacy presets */\n switch (preset) {\n case Lame.R3MIX:\n {\n preset = Lame.V3;\n gfp.VBR = VbrMode$20.vbr_mtrh;\n break;\n }\n case Lame.MEDIUM:\n {\n preset = Lame.V4;\n gfp.VBR = VbrMode$20.vbr_rh;\n break;\n }\n case Lame.MEDIUM_FAST:\n {\n preset = Lame.V4;\n gfp.VBR = VbrMode$20.vbr_mtrh;\n break;\n }\n case Lame.STANDARD:\n {\n preset = Lame.V2;\n gfp.VBR = VbrMode$20.vbr_rh;\n break;\n }\n case Lame.STANDARD_FAST:\n {\n preset = Lame.V2;\n gfp.VBR = VbrMode$20.vbr_mtrh;\n break;\n }\n case Lame.EXTREME:\n {\n preset = Lame.V0;\n gfp.VBR = VbrMode$20.vbr_rh;\n break;\n }\n case Lame.EXTREME_FAST:\n {\n preset = Lame.V0;\n gfp.VBR = VbrMode$20.vbr_mtrh;\n break;\n }\n case Lame.INSANE:\n {\n preset = 320;\n gfp.preset = preset;\n apply_abr_preset(gfp, preset, enforce);\n gfp.VBR = VbrMode$20.vbr_off;\n return preset;\n }\n }\n\n gfp.preset = preset;\n {\n switch (preset) {\n case Lame.V9:\n apply_vbr_preset(gfp, 9, enforce);\n return preset;\n case Lame.V8:\n apply_vbr_preset(gfp, 8, enforce);\n return preset;\n case Lame.V7:\n apply_vbr_preset(gfp, 7, enforce);\n return preset;\n case Lame.V6:\n apply_vbr_preset(gfp, 6, enforce);\n return preset;\n case Lame.V5:\n apply_vbr_preset(gfp, 5, enforce);\n return preset;\n case Lame.V4:\n apply_vbr_preset(gfp, 4, enforce);\n return preset;\n case Lame.V3:\n apply_vbr_preset(gfp, 3, enforce);\n return preset;\n case Lame.V2:\n apply_vbr_preset(gfp, 2, enforce);\n return preset;\n case Lame.V1:\n apply_vbr_preset(gfp, 1, enforce);\n return preset;\n case Lame.V0:\n apply_vbr_preset(gfp, 0, enforce);\n return preset;\n default:\n break;\n }\n }\n if (8 <= preset && preset <= 320) {\n return apply_abr_preset(gfp, preset, enforce);\n }\n\n /* no corresponding preset found */\n gfp.preset = 0;\n return preset;\n };\n\n // Rest from getset.c:\n\n /**\n * VBR quality level.
\n * 0 = highest
\n * 9 = lowest\n */\n function lame_set_VBR_q(gfp, VBR_q) {\n var ret = 0;\n\n if (0 > VBR_q) {\n /* Unknown VBR quality level! */\n ret = -1;\n VBR_q = 0;\n }\n if (9 < VBR_q) {\n ret = -1;\n VBR_q = 9;\n }\n\n gfp.VBR_q = VBR_q;\n gfp.VBR_q_frac = 0;\n return ret;\n }\n\n}\n\nvar Presets_1 = Presets$1;\n\nfunction VBRQuantize() {\n var qupvt;\n var tak;\n\n this.setModules = function (_qupvt, _tk) {\n qupvt = _qupvt;\n tak = _tk;\n };\n //TODO\n\n}\n\nvar VBRQuantize_1 = VBRQuantize;\n\n//package mp3;\n\nfunction CalcNoiseResult$1() {\n /**\n * sum of quantization noise > masking\n */\n this.over_noise = 0.;\n /**\n * sum of all quantization noise\n */\n this.tot_noise = 0.;\n /**\n * max quantization noise\n */\n this.max_noise = 0.;\n /**\n * number of quantization noise > masking\n */\n this.over_count = 0;\n /**\n * SSD-like cost of distorted bands\n */\n this.over_SSD = 0;\n this.bits = 0;\n}\n\nvar CalcNoiseResult_1 = CalcNoiseResult$1;\n\nvar new_float$22 = common.new_float;\nvar new_int$22 = common.new_int;\nfunction CalcNoiseData() {\n this.global_gain = 0;\n this.sfb_count1 = 0;\n this.step = new_int$22(39);\n this.noise = new_float$22(39);\n this.noise_log = new_float$22(39);\n}\n\nvar CalcNoiseData_1 = CalcNoiseData;\n\n/*\n * MP3 quantization\n *\n * Copyright (c) 1999-2000 Mark Taylor\n * Copyright (c) 1999-2003 Takehiro Tominaga\n * Copyright (c) 2000-2007 Robert Hegemann\n * Copyright (c) 2001-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Quantize.java,v 1.24 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\n\nvar System$21 = common.System;\nvar VbrMode$21 = common.VbrMode;\nvar Util$21 = common.Util;\nvar Arrays$21 = common.Arrays;\nvar new_float$21 = common.new_float;\nvar assert$21 = common.assert;\n\n\n\n\n\n\n\n\nfunction Quantize$1() {\n var bs;\n this.rv = null;\n var rv;\n this.qupvt = null;\n var qupvt;\n\n var vbr = new VBRQuantize_1();\n var tk;\n\n this.setModules = function (_bs, _rv, _qupvt, _tk) {\n bs = _bs;\n rv = _rv;\n this.rv = _rv;\n qupvt = _qupvt;\n this.qupvt = _qupvt;\n tk = _tk;\n vbr.setModules(qupvt, tk);\n };\n\n /**\n * convert from L/R <. Mid/Side\n */\n this.ms_convert = function (l3_side, gr) {\n for (var i = 0; i < 576; ++i) {\n var l = l3_side.tt[gr][0].xr[i];\n var r = l3_side.tt[gr][1].xr[i];\n l3_side.tt[gr][0].xr[i] = (l + r) * (Util$21.SQRT2 * 0.5);\n l3_side.tt[gr][1].xr[i] = (l - r) * (Util$21.SQRT2 * 0.5);\n }\n };\n\n /**\n * mt 6/99\n *\n * initializes cod_info, scalefac and xrpow\n *\n * returns 0 if all energies in xr are zero, else 1\n */\n function init_xrpow_core(cod_info, xrpow, upper, sum) {\n sum = 0;\n for (var i = 0; i <= upper; ++i) {\n var tmp = Math.abs(cod_info.xr[i]);\n sum += tmp;\n xrpow[i] = Math.sqrt(tmp * Math.sqrt(tmp));\n\n if (xrpow[i] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[i];\n }\n return sum;\n }\n\n this.init_xrpow = function (gfc, cod_info, xrpow) {\n var sum = 0;\n var upper = 0 | cod_info.max_nonzero_coeff;\n\n assert$21(xrpow != null);\n cod_info.xrpow_max = 0;\n\n /*\n * check if there is some energy we have to quantize and calculate xrpow\n * matching our fresh scalefactors\n */\n assert$21(0 <= upper && upper <= 575);\n\n Arrays$21.fill(xrpow, upper, 576, 0);\n\n sum = init_xrpow_core(cod_info, xrpow, upper, sum);\n\n /*\n * return 1 if we have something to quantize, else 0\n */\n if (sum > 1E-20) {\n var j = 0;\n if ((gfc.substep_shaping & 2) != 0)\n j = 1;\n\n for (var i = 0; i < cod_info.psymax; i++)\n gfc.pseudohalf[i] = j;\n\n return true;\n }\n\n Arrays$21.fill(cod_info.l3_enc, 0, 576, 0);\n return false;\n };\n\n /**\n * Gabriel Bouvigne feb/apr 2003
\n * Analog silence detection in partitionned sfb21 or sfb12 for short blocks\n *\n * From top to bottom of sfb, changes to 0 coeffs which are below ath. It\n * stops on the first coeff higher than ath.\n */\n function psfb21_analogsilence(gfc, cod_info) {\n var ath = gfc.ATH;\n var xr = cod_info.xr;\n\n if (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n /* NORM, START or STOP type, but not SHORT blocks */\n var stop = false;\n for (var gsfb = Encoder_1.PSFB21 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start = gfc.scalefac_band.psfb21[gsfb];\n var end = gfc.scalefac_band.psfb21[gsfb + 1];\n var ath21 = qupvt.athAdjust(ath.adjust, ath.psfb21[gsfb],\n ath.floor);\n\n if (gfc.nsPsy.longfact[21] > 1e-12)\n ath21 *= gfc.nsPsy.longfact[21];\n\n for (var j = end - 1; j >= start; j--) {\n if (Math.abs(xr[j]) < ath21)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n } else {\n /* note: short blocks coeffs are reordered */\n for (var block = 0; block < 3; block++) {\n var stop = false;\n for (var gsfb = Encoder_1.PSFB12 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start = gfc.scalefac_band.s[12]\n * 3\n + (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12])\n * block\n + (gfc.scalefac_band.psfb12[gsfb] - gfc.scalefac_band.psfb12[0]);\n var end = start\n + (gfc.scalefac_band.psfb12[gsfb + 1] - gfc.scalefac_band.psfb12[gsfb]);\n var ath12 = qupvt.athAdjust(ath.adjust, ath.psfb12[gsfb],\n ath.floor);\n\n if (gfc.nsPsy.shortfact[12] > 1e-12)\n ath12 *= gfc.nsPsy.shortfact[12];\n\n for (var j = end - 1; j >= start; j--) {\n if (Math.abs(xr[j]) < ath12)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n }\n }\n\n }\n\n this.init_outer_loop = function (gfc, cod_info) {\n /*\n * initialize fresh cod_info\n */\n cod_info.part2_3_length = 0;\n cod_info.big_values = 0;\n cod_info.count1 = 0;\n cod_info.global_gain = 210;\n cod_info.scalefac_compress = 0;\n /* mixed_block_flag, block_type was set in psymodel.c */\n cod_info.table_select[0] = 0;\n cod_info.table_select[1] = 0;\n cod_info.table_select[2] = 0;\n cod_info.subblock_gain[0] = 0;\n cod_info.subblock_gain[1] = 0;\n cod_info.subblock_gain[2] = 0;\n cod_info.subblock_gain[3] = 0;\n /* this one is always 0 */\n cod_info.region0_count = 0;\n cod_info.region1_count = 0;\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 0;\n cod_info.count1table_select = 0;\n cod_info.part2_length = 0;\n cod_info.sfb_lmax = Encoder_1.SBPSY_l;\n cod_info.sfb_smin = Encoder_1.SBPSY_s;\n cod_info.psy_lmax = gfc.sfb21_extra ? Encoder_1.SBMAX_l : Encoder_1.SBPSY_l;\n cod_info.psymax = cod_info.psy_lmax;\n cod_info.sfbmax = cod_info.sfb_lmax;\n cod_info.sfbdivide = 11;\n for (var sfb = 0; sfb < Encoder_1.SBMAX_l; sfb++) {\n cod_info.width[sfb] = gfc.scalefac_band.l[sfb + 1]\n - gfc.scalefac_band.l[sfb];\n /* which is always 0. */\n cod_info.window[sfb] = 3;\n }\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n var ixwork = new_float$21(576);\n\n cod_info.sfb_smin = 0;\n cod_info.sfb_lmax = 0;\n if (cod_info.mixed_block_flag != 0) {\n /*\n * MPEG-1: sfbs 0-7 long block, 3-12 short blocks MPEG-2(.5):\n * sfbs 0-5 long block, 3-12 short blocks\n */\n cod_info.sfb_smin = 3;\n cod_info.sfb_lmax = gfc.mode_gr * 2 + 4;\n }\n cod_info.psymax = cod_info.sfb_lmax\n + 3\n * ((gfc.sfb21_extra ? Encoder_1.SBMAX_s : Encoder_1.SBPSY_s) - cod_info.sfb_smin);\n cod_info.sfbmax = cod_info.sfb_lmax + 3\n * (Encoder_1.SBPSY_s - cod_info.sfb_smin);\n cod_info.sfbdivide = cod_info.sfbmax - 18;\n cod_info.psy_lmax = cod_info.sfb_lmax;\n /* re-order the short blocks, for more efficient encoding below */\n /* By Takehiro TOMINAGA */\n /*\n * Within each scalefactor band, data is given for successive time\n * windows, beginning with window 0 and ending with window 2. Within\n * each window, the quantized values are then arranged in order of\n * increasing frequency...\n */\n var ix = gfc.scalefac_band.l[cod_info.sfb_lmax];\n System$21.arraycopy(cod_info.xr, 0, ixwork, 0, 576);\n for (var sfb = cod_info.sfb_smin; sfb < Encoder_1.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n for (var window = 0; window < 3; window++) {\n for (var l = start; l < end; l++) {\n cod_info.xr[ix++] = ixwork[3 * l + window];\n }\n }\n }\n\n var j = cod_info.sfb_lmax;\n for (var sfb = cod_info.sfb_smin; sfb < Encoder_1.SBMAX_s; sfb++) {\n cod_info.width[j] = cod_info.width[j + 1] = cod_info.width[j + 2] = gfc.scalefac_band.s[sfb + 1]\n - gfc.scalefac_band.s[sfb];\n cod_info.window[j] = 0;\n cod_info.window[j + 1] = 1;\n cod_info.window[j + 2] = 2;\n j += 3;\n }\n }\n\n cod_info.count1bits = 0;\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[0][0];\n cod_info.slen[0] = 0;\n cod_info.slen[1] = 0;\n cod_info.slen[2] = 0;\n cod_info.slen[3] = 0;\n\n cod_info.max_nonzero_coeff = 575;\n\n /*\n * fresh scalefactors are all zero\n */\n Arrays$21.fill(cod_info.scalefac, 0);\n\n psfb21_analogsilence(gfc, cod_info);\n };\n\n function BinSearchDirection(ordinal) {\n this.ordinal = ordinal;\n }\n\n BinSearchDirection.BINSEARCH_NONE = new BinSearchDirection(0);\n BinSearchDirection.BINSEARCH_UP = new BinSearchDirection(1);\n BinSearchDirection.BINSEARCH_DOWN = new BinSearchDirection(2);\n\n /**\n * author/date??\n *\n * binary step size search used by outer_loop to get a quantizer step size\n * to start with\n */\n function bin_search_StepSize(gfc, cod_info, desired_rate, ch, xrpow) {\n var nBits;\n var CurrentStep = gfc.CurrentStep[ch];\n var flagGoneOver = false;\n var start = gfc.OldValue[ch];\n var Direction = BinSearchDirection.BINSEARCH_NONE;\n cod_info.global_gain = start;\n desired_rate -= cod_info.part2_length;\n\n assert$21(CurrentStep != 0);\n for (; ;) {\n var step;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n\n if (CurrentStep == 1 || nBits == desired_rate)\n break;\n /* nothing to adjust anymore */\n\n if (nBits > desired_rate) {\n /* increase Quantize_StepSize */\n if (Direction == BinSearchDirection.BINSEARCH_DOWN)\n flagGoneOver = true;\n\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_UP;\n step = CurrentStep;\n } else {\n /* decrease Quantize_StepSize */\n if (Direction == BinSearchDirection.BINSEARCH_UP)\n flagGoneOver = true;\n\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_DOWN;\n step = -CurrentStep;\n }\n cod_info.global_gain += step;\n if (cod_info.global_gain < 0) {\n cod_info.global_gain = 0;\n flagGoneOver = true;\n }\n if (cod_info.global_gain > 255) {\n cod_info.global_gain = 255;\n flagGoneOver = true;\n }\n }\n\n assert$21(cod_info.global_gain >= 0);\n assert$21(cod_info.global_gain < 256);\n\n while (nBits > desired_rate && cod_info.global_gain < 255) {\n cod_info.global_gain++;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n }\n gfc.CurrentStep[ch] = (start - cod_info.global_gain >= 4) ? 4 : 2;\n gfc.OldValue[ch] = cod_info.global_gain;\n cod_info.part2_3_length = nBits;\n return nBits;\n }\n\n this.trancate_smallspectrums = function (gfc, gi, l3_xmin, work) {\n var distort = new_float$21(L3Side_1.SFBMAX);\n\n if ((0 == (gfc.substep_shaping & 4) && gi.block_type == Encoder_1.SHORT_TYPE)\n || (gfc.substep_shaping & 0x80) != 0)\n return;\n qupvt.calc_noise(gi, l3_xmin, distort, new CalcNoiseResult_1(), null);\n for (var j = 0; j < 576; j++) {\n var xr = 0.0;\n if (gi.l3_enc[j] != 0)\n xr = Math.abs(gi.xr[j]);\n work[j] = xr;\n }\n\n var j = 0;\n var sfb = 8;\n if (gi.block_type == Encoder_1.SHORT_TYPE)\n sfb = 6;\n do {\n var allowedNoise, trancateThreshold;\n var nsame, start;\n\n var width = gi.width[sfb];\n j += width;\n if (distort[sfb] >= 1.0)\n continue;\n\n Arrays$21.sort(work, j - width, width);\n if (BitStream.EQ(work[j - 1], 0.0))\n continue;\n /* all zero sfb */\n\n allowedNoise = (1.0 - distort[sfb]) * l3_xmin[sfb];\n trancateThreshold = 0.0;\n start = 0;\n do {\n var noise;\n for (nsame = 1; start + nsame < width; nsame++)\n if (BitStream.NEQ(work[start + j - width], work[start + j\n + nsame - width]))\n break;\n\n noise = work[start + j - width] * work[start + j - width]\n * nsame;\n if (allowedNoise < noise) {\n if (start != 0)\n trancateThreshold = work[start + j - width - 1];\n break;\n }\n allowedNoise -= noise;\n start += nsame;\n } while (start < width);\n if (BitStream.EQ(trancateThreshold, 0.0))\n continue;\n\n do {\n if (Math.abs(gi.xr[j - width]) <= trancateThreshold)\n gi.l3_enc[j - width] = 0;\n } while (--width > 0);\n } while (++sfb < gi.psymax);\n\n gi.part2_3_length = tk.noquant_count_bits(gfc, gi, null);\n };\n\n /**\n * author/date??\n *\n * Function: Returns zero if there is a scalefac which has not been\n * amplified. Otherwise it returns one.\n */\n function loop_break(cod_info) {\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++)\n if (cod_info.scalefac[sfb]\n + cod_info.subblock_gain[cod_info.window[sfb]] == 0)\n return false;\n\n return true;\n }\n\n /* mt 5/99: Function: Improved calc_noise for a single channel */\n\n function penalties(noise) {\n return Util$21.FAST_LOG10((0.368 + 0.632 * noise * noise * noise));\n }\n\n /**\n * author/date??\n *\n * several different codes to decide which quantization is better\n */\n function get_klemm_noise(distort, gi) {\n var klemm_noise = 1E-37;\n for (var sfb = 0; sfb < gi.psymax; sfb++)\n klemm_noise += penalties(distort[sfb]);\n\n return Math.max(1e-20, klemm_noise);\n }\n\n function quant_compare(quant_comp, best, calc, gi, distort) {\n /**\n * noise is given in decibels (dB) relative to masking thesholds.
\n *\n * over_noise: ??? (the previous comment is fully wrong)
\n * tot_noise: ??? (the previous comment is fully wrong)
\n * max_noise: max quantization noise\n */\n var better;\n\n switch (quant_comp) {\n default:\n case 9:\n {\n if (best.over_count > 0) {\n /* there are distorted sfb */\n better = calc.over_SSD <= best.over_SSD;\n if (calc.over_SSD == best.over_SSD)\n better = calc.bits < best.bits;\n } else {\n /* no distorted sfb */\n better = ((calc.max_noise < 0) && ((calc.max_noise * 10 + calc.bits) <= (best.max_noise * 10 + best.bits)));\n }\n break;\n }\n\n case 0:\n better = calc.over_count < best.over_count\n || (calc.over_count == best.over_count && calc.over_noise < best.over_noise)\n || (calc.over_count == best.over_count\n && BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise);\n break;\n\n case 8:\n calc.max_noise = get_klemm_noise(distort, gi);\n //$FALL-THROUGH$\n case 1:\n better = calc.max_noise < best.max_noise;\n break;\n case 2:\n better = calc.tot_noise < best.tot_noise;\n break;\n case 3:\n better = (calc.tot_noise < best.tot_noise)\n && (calc.max_noise < best.max_noise);\n break;\n case 4:\n better = (calc.max_noise <= 0.0 && best.max_noise > 0.2)\n || (calc.max_noise <= 0.0 && best.max_noise < 0.0\n && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise)\n || (calc.max_noise <= 0.0 && best.max_noise > 0.0\n && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise\n + best.over_noise)\n || (calc.max_noise > 0.0 && best.max_noise > -0.05\n && best.max_noise > calc.max_noise - 0.1 && calc.tot_noise\n + calc.over_noise < best.tot_noise\n + best.over_noise)\n || (calc.max_noise > 0.0 && best.max_noise > -0.1\n && best.max_noise > calc.max_noise - 0.15 && calc.tot_noise\n + calc.over_noise + calc.over_noise < best.tot_noise\n + best.over_noise + best.over_noise);\n break;\n case 5:\n better = calc.over_noise < best.over_noise\n || (BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise);\n break;\n case 6:\n better = calc.over_noise < best.over_noise\n || (BitStream.EQ(calc.over_noise, best.over_noise) && (calc.max_noise < best.max_noise || (BitStream\n .EQ(calc.max_noise, best.max_noise) && calc.tot_noise <= best.tot_noise)));\n break;\n case 7:\n better = calc.over_count < best.over_count\n || calc.over_noise < best.over_noise;\n break;\n }\n\n if (best.over_count == 0) {\n /*\n * If no distorted bands, only use this quantization if it is\n * better, and if it uses less bits. Unfortunately, part2_3_length\n * is sometimes a poor estimator of the final size at low bitrates.\n */\n better = better && calc.bits < best.bits;\n }\n\n return better;\n }\n\n /**\n * author/date??\n *\n *
\n     *  Amplify the scalefactor bands that violate the masking threshold.\n     *  See ISO 11172-3 Section C.1.5.4.3.5\n     *\n     *  distort[] = noise/masking\n     *  distort[] > 1   ==> noise is not masked\n     *  distort[] < 1   ==> noise is masked\n     *  max_dist = maximum value of distort[]\n     *\n     *  Three algorithms:\n     *  noise_shaping_amp\n     *        0             Amplify all bands with distort[]>1.\n     *\n     *        1             Amplify all bands with distort[] >= max_dist^(.5);\n     *                     ( 50% in the db scale)\n     *\n     *        2             Amplify first band with distort[] >= max_dist;\n     *\n     *\n     *  For algorithms 0 and 1, if max_dist < 1, then amplify all bands\n     *  with distort[] >= .95*max_dist.  This is to make sure we always\n     *  amplify at least one band.\n     * 
\n */\n function amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n var ifqstep34;\n\n if (cod_info.scalefac_scale == 0) {\n ifqstep34 = 1.29683955465100964055;\n /* 2**(.75*.5) */\n } else {\n ifqstep34 = 1.68179283050742922612;\n /* 2**(.75*1) */\n }\n\n /* compute maximum value of distort[] */\n var trigger = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n if (trigger < distort[sfb])\n trigger = distort[sfb];\n }\n\n var noise_shaping_amp = gfc.noise_shaping_amp;\n if (noise_shaping_amp == 3) {\n if (bRefine)\n noise_shaping_amp = 2;\n else\n noise_shaping_amp = 1;\n }\n switch (noise_shaping_amp) {\n case 2:\n /* amplify exactly 1 band */\n break;\n\n case 1:\n /* amplify bands within 50% of max (on db scale) */\n if (trigger > 1.0)\n trigger = Math.pow(trigger, .5);\n else\n trigger *= .95;\n break;\n\n case 0:\n default:\n /* ISO algorithm. amplify all bands with distort>1 */\n if (trigger > 1.0)\n trigger = 1.0;\n else\n trigger *= .95;\n break;\n }\n\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var l;\n j += width;\n if (distort[sfb] < trigger)\n continue;\n\n if ((gfc.substep_shaping & 2) != 0) {\n gfc.pseudohalf[sfb] = (0 == gfc.pseudohalf[sfb]) ? 1 : 0;\n if (0 == gfc.pseudohalf[sfb] && gfc.noise_shaping_amp == 2)\n return;\n }\n cod_info.scalefac[sfb]++;\n for (l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n\n if (gfc.noise_shaping_amp == 2)\n return;\n }\n }\n\n /**\n * Takehiro Tominaga 2000-xx-xx\n *\n * turns on scalefac scale and adjusts scalefactors\n */\n function inc_scalefac_scale(cod_info, xrpow) {\n var ifqstep34 = 1.29683955465100964055;\n\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var s = cod_info.scalefac[sfb];\n if (cod_info.preflag != 0)\n s += qupvt.pretab[sfb];\n j += width;\n if ((s & 1) != 0) {\n s++;\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n cod_info.scalefac[sfb] = s >> 1;\n }\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 1;\n }\n\n /**\n * Takehiro Tominaga 2000-xx-xx\n *\n * increases the subblock gain and adjusts scalefactors\n */\n function inc_subblock_gain(gfc, cod_info, xrpow) {\n var sfb;\n var scalefac = cod_info.scalefac;\n\n /* subbloc_gain can't do anything in the long block region */\n for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) {\n if (scalefac[sfb] >= 16)\n return true;\n }\n\n for (var window = 0; window < 3; window++) {\n var s1 = 0;\n var s2 = 0;\n\n for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbdivide; sfb += 3) {\n if (s1 < scalefac[sfb])\n s1 = scalefac[sfb];\n }\n for (; sfb < cod_info.sfbmax; sfb += 3) {\n if (s2 < scalefac[sfb])\n s2 = scalefac[sfb];\n }\n\n if (s1 < 16 && s2 < 8)\n continue;\n\n if (cod_info.subblock_gain[window] >= 7)\n return true;\n\n /*\n * even though there is no scalefactor for sfb12 subblock gain\n * affects upper frequencies too, that's why we have to go up to\n * SBMAX_s\n */\n cod_info.subblock_gain[window]++;\n var j = gfc.scalefac_band.l[cod_info.sfb_lmax];\n for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbmax; sfb += 3) {\n var amp;\n var width = cod_info.width[sfb];\n var s = scalefac[sfb];\n assert$21(s >= 0);\n s = s - (4 >> cod_info.scalefac_scale);\n if (s >= 0) {\n scalefac[sfb] = s;\n j += width * 3;\n continue;\n }\n\n scalefac[sfb] = 0;\n {\n var gain = 210 + (s << (cod_info.scalefac_scale + 1));\n amp = qupvt.IPOW20(gain);\n }\n j += width * (window + 1);\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n j += width * (3 - window - 1);\n }\n\n {\n var amp = qupvt.IPOW20(202);\n j += cod_info.width[sfb] * (window + 1);\n for (var l = -cod_info.width[sfb]; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n }\n return false;\n }\n\n /**\n *
\n     *  Takehiro Tominaga /date??\n     *  Robert Hegemann 2000-09-06: made a function of it\n     *\n     *  amplifies scalefactor bands,\n     *   - if all are already amplified returns 0\n     *   - if some bands are amplified too much:\n     *      * try to increase scalefac_scale\n     *      * if already scalefac_scale was set\n     *          try on short blocks to increase subblock gain\n     * 
\n */\n function balance_noise(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n\n amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine);\n\n /*\n * check to make sure we have not amplified too much loop_break returns\n * 0 if there is an unamplified scalefac scale_bitcount returns 0 if no\n * scalefactors are too large\n */\n\n var status = loop_break(cod_info);\n\n if (status)\n return false;\n /* all bands amplified */\n\n /*\n * not all scalefactors have been amplified. so these scalefacs are\n * possibly valid. encode them:\n */\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n\n if (!status)\n return true;\n /* amplified some bands not exceeding limits */\n\n /*\n * some scalefactors are too large. lets try setting scalefac_scale=1\n */\n if (gfc.noise_shaping > 1) {\n Arrays$21.fill(gfc.pseudohalf, 0);\n if (0 == cod_info.scalefac_scale) {\n inc_scalefac_scale(cod_info, xrpow);\n status = false;\n } else {\n if (cod_info.block_type == Encoder_1.SHORT_TYPE\n && gfc.subblock_gain > 0) {\n status = (inc_subblock_gain(gfc, cod_info, xrpow) || loop_break(cod_info));\n }\n }\n }\n\n if (!status) {\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n }\n return !status;\n }\n\n /**\n *
\n     *  Function: The outer iteration loop controls the masking conditions\n     *  of all scalefactorbands. It computes the best scalefac and\n     *  global gain. This module calls the inner iteration loop\n     *\n     *  mt 5/99 completely rewritten to allow for bit reservoir control,\n     *  mid/side channels with L/R or mid/side masking thresholds,\n     *  and chooses best quantization instead of last quantization when\n     *  no distortion free quantization can be found.\n     *\n     *  added VBR support mt 5/99\n     *\n     *  some code shuffle rh 9/00\n     * 
\n *\n * @param l3_xmin\n * allowed distortion\n * @param xrpow\n * coloured magnitudes of spectral\n * @param targ_bits\n * maximum allowed bits\n */\n this.outer_loop = function (gfp, cod_info, l3_xmin, xrpow, ch, targ_bits) {\n var gfc = gfp.internal_flags;\n var cod_info_w = new GrInfo_1();\n var save_xrpow = new_float$21(576);\n var distort = new_float$21(L3Side_1.SFBMAX);\n var best_noise_info = new CalcNoiseResult_1();\n var better;\n var prev_noise = new CalcNoiseData_1();\n var best_part2_3_length = 9999999;\n var bEndOfSearch = false;\n var bRefine = false;\n var best_ggain_pass1 = 0;\n\n bin_search_StepSize(gfc, cod_info, targ_bits, ch, xrpow);\n\n if (0 == gfc.noise_shaping)\n /* fast mode, no noise shaping, we are ready */\n return 100;\n /* default noise_info.over_count */\n\n /* compute the distortion in this quantization */\n /* coefficients and thresholds both l/r (or both mid/side) */\n qupvt.calc_noise(cod_info, l3_xmin, distort, best_noise_info,\n prev_noise);\n best_noise_info.bits = cod_info.part2_3_length;\n\n cod_info_w.assign(cod_info);\n var age = 0;\n System$21.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n\n while (!bEndOfSearch) {\n /* BEGIN MAIN LOOP */\n do {\n var noise_info = new CalcNoiseResult_1();\n var search_limit;\n var maxggain = 255;\n\n /*\n * When quantization with no distorted bands is found, allow up\n * to X new unsuccesful tries in serial. This gives us more\n * possibilities for different quant_compare modes. Much more\n * than 3 makes not a big difference, it is only slower.\n */\n\n if ((gfc.substep_shaping & 2) != 0) {\n search_limit = 20;\n } else {\n search_limit = 3;\n }\n\n /*\n * Check if the last scalefactor band is distorted. in VBR mode\n * we can't get rid of the distortion, so quit now and VBR mode\n * will try again with more bits. (makes a 10% speed increase,\n * the files I tested were binary identical, 2000/05/20 Robert\n * Hegemann) distort[] > 1 means noise > allowed noise\n */\n if (gfc.sfb21_extra) {\n if (distort[cod_info_w.sfbmax] > 1.0)\n break;\n if (cod_info_w.block_type == Encoder_1.SHORT_TYPE\n && (distort[cod_info_w.sfbmax + 1] > 1.0 || distort[cod_info_w.sfbmax + 2] > 1.0))\n break;\n }\n\n /* try a new scalefactor conbination on cod_info_w */\n if (!balance_noise(gfp, cod_info_w, distort, xrpow, bRefine))\n break;\n if (cod_info_w.scalefac_scale != 0)\n maxggain = 254;\n\n /*\n * inner_loop starts with the initial quantization step computed\n * above and slowly increases until the bits < huff_bits. Thus\n * it is important not to start with too large of an inital\n * quantization step. Too small is ok, but inner_loop will take\n * longer\n */\n var huff_bits = targ_bits - cod_info_w.part2_length;\n if (huff_bits <= 0)\n break;\n\n /*\n * increase quantizer stepsize until needed bits are below\n * maximum\n */\n while ((cod_info_w.part2_3_length = tk.count_bits(gfc, xrpow,\n cod_info_w, prev_noise)) > huff_bits\n && cod_info_w.global_gain <= maxggain)\n cod_info_w.global_gain++;\n\n if (cod_info_w.global_gain > maxggain)\n break;\n\n if (best_noise_info.over_count == 0) {\n\n while ((cod_info_w.part2_3_length = tk.count_bits(gfc,\n xrpow, cod_info_w, prev_noise)) > best_part2_3_length\n && cod_info_w.global_gain <= maxggain)\n cod_info_w.global_gain++;\n\n if (cod_info_w.global_gain > maxggain)\n break;\n }\n\n /* compute the distortion in this quantization */\n qupvt.calc_noise(cod_info_w, l3_xmin, distort, noise_info,\n prev_noise);\n noise_info.bits = cod_info_w.part2_3_length;\n\n /*\n * check if this quantization is better than our saved\n * quantization\n */\n if (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n // NORM, START or STOP type\n better = gfp.quant_comp;\n } else\n better = gfp.quant_comp_short;\n\n better = quant_compare(better, best_noise_info, noise_info,\n cod_info_w, distort) ? 1 : 0;\n\n /* save data so we can restore this quantization later */\n if (better != 0) {\n best_part2_3_length = cod_info.part2_3_length;\n best_noise_info = noise_info;\n cod_info.assign(cod_info_w);\n age = 0;\n /* save data so we can restore this quantization later */\n /* store for later reuse */\n System$21.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n } else {\n /* early stop? */\n if (gfc.full_outer_loop == 0) {\n if (++age > search_limit\n && best_noise_info.over_count == 0)\n break;\n if ((gfc.noise_shaping_amp == 3) && bRefine && age > 30)\n break;\n if ((gfc.noise_shaping_amp == 3)\n && bRefine\n && (cod_info_w.global_gain - best_ggain_pass1) > 15)\n break;\n }\n }\n } while ((cod_info_w.global_gain + cod_info_w.scalefac_scale) < 255);\n\n if (gfc.noise_shaping_amp == 3) {\n if (!bRefine) {\n /* refine search */\n cod_info_w.assign(cod_info);\n System$21.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n age = 0;\n best_ggain_pass1 = cod_info_w.global_gain;\n\n bRefine = true;\n } else {\n /* search already refined, stop */\n bEndOfSearch = true;\n }\n\n } else {\n bEndOfSearch = true;\n }\n }\n\n assert$21((cod_info.global_gain + cod_info.scalefac_scale) <= 255);\n /*\n * finish up\n */\n if (gfp.VBR == VbrMode$21.vbr_rh || gfp.VBR == VbrMode$21.vbr_mtrh)\n /* restore for reuse on next try */\n System$21.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n /*\n * do the 'substep shaping'\n */\n else if ((gfc.substep_shaping & 1) != 0)\n trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow);\n\n return best_noise_info.over_count;\n };\n\n /**\n * Robert Hegemann 2000-09-06\n *\n * update reservoir status after FINAL quantization/bitrate\n */\n this.iteration_finish_one = function (gfc, gr, ch) {\n var l3_side = gfc.l3_side;\n var cod_info = l3_side.tt[gr][ch];\n\n /*\n * try some better scalefac storage\n */\n tk.best_scalefac_store(gfc, gr, ch, l3_side);\n\n /*\n * best huffman_divide may save some bits too\n */\n if (gfc.use_best_huffman == 1)\n tk.best_huffman_divide(gfc, cod_info);\n\n /*\n * update reservoir status after FINAL quantization/bitrate\n */\n rv.ResvAdjust(gfc, cod_info);\n };\n\n /**\n *\n * 2000-09-04 Robert Hegemann\n *\n * @param l3_xmin\n * allowed distortion of the scalefactor\n * @param xrpow\n * coloured magnitudes of spectral values\n */\n this.VBR_encode_granule = function (gfp, cod_info, l3_xmin, xrpow, ch, min_bits, max_bits) {\n var gfc = gfp.internal_flags;\n var bst_cod_info = new GrInfo_1();\n var bst_xrpow = new_float$21(576);\n var Max_bits = max_bits;\n var real_bits = max_bits + 1;\n var this_bits = (max_bits + min_bits) / 2;\n var dbits, over, found = 0;\n var sfb21_extra = gfc.sfb21_extra;\n\n assert$21(Max_bits <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n Arrays$21.fill(bst_cod_info.l3_enc, 0);\n\n /*\n * search within round about 40 bits of optimal\n */\n do {\n assert$21(this_bits >= min_bits);\n assert$21(this_bits <= max_bits);\n assert$21(min_bits <= max_bits);\n\n if (this_bits > Max_bits - 42)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = sfb21_extra;\n\n over = outer_loop(gfp, cod_info, l3_xmin, xrpow, ch, this_bits);\n\n /*\n * is quantization as good as we are looking for ? in this case: is\n * no scalefactor band distorted?\n */\n if (over <= 0) {\n found = 1;\n /*\n * now we know it can be done with \"real_bits\" and maybe we can\n * skip some iterations\n */\n real_bits = cod_info.part2_3_length;\n\n /*\n * store best quantization so far\n */\n bst_cod_info.assign(cod_info);\n System$21.arraycopy(xrpow, 0, bst_xrpow, 0, 576);\n\n /*\n * try with fewer bits\n */\n max_bits = real_bits - 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n } else {\n /*\n * try with more bits\n */\n min_bits = this_bits + 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n\n if (found != 0) {\n found = 2;\n /*\n * start again with best quantization so far\n */\n cod_info.assign(bst_cod_info);\n System$21.arraycopy(bst_xrpow, 0, xrpow, 0, 576);\n }\n }\n } while (dbits > 12);\n\n gfc.sfb21_extra = sfb21_extra;\n\n /*\n * found=0 => nothing found, use last one found=1 => we just found the\n * best and left the loop found=2 => we restored a good one and have now\n * l3_enc to restore too\n */\n if (found == 2) {\n System$21.arraycopy(bst_cod_info.l3_enc, 0, cod_info.l3_enc, 0, 576);\n }\n assert$21(cod_info.part2_3_length <= Max_bits);\n };\n\n /**\n * Robert Hegemann 2000-09-05\n *\n * calculates * how many bits are available for analog silent granules * how\n * many bits to use for the lowest allowed bitrate * how many bits each\n * bitrate would provide\n */\n this.get_framebits = function (gfp, frameBits) {\n var gfc = gfp.internal_flags;\n\n /*\n * always use at least this many bits per granule per channel unless we\n * detect analog silence, see below\n */\n gfc.bitrate_index = gfc.VBR_min_bitrate;\n var bitsPerFrame = bs.getframebits(gfp);\n\n /*\n * bits for analog silence\n */\n gfc.bitrate_index = 1;\n bitsPerFrame = bs.getframebits(gfp);\n\n for (var i = 1; i <= gfc.VBR_max_bitrate; i++) {\n gfc.bitrate_index = i;\n var mb = new MeanBits(bitsPerFrame);\n frameBits[i] = rv.ResvFrameBegin(gfp, mb);\n bitsPerFrame = mb.bits;\n }\n };\n\n /* RH: this one needs to be overhauled sometime */\n\n /**\n *
\n     *  2000-09-04 Robert Hegemann\n     *\n     *  * converts LR to MS coding when necessary\n     *  * calculates allowed/adjusted quantization noise amounts\n     *  * detects analog silent frames\n     *\n     *  some remarks:\n     *  - lower masking depending on Quality setting\n     *  - quality control together with adjusted ATH MDCT scaling\n     *    on lower quality setting allocate more noise from\n     *    ATH masking, and on higher quality setting allocate\n     *    less noise from ATH masking.\n     *  - experiments show that going more than 2dB over GPSYCHO's\n     *    limits ends up in very annoying artefacts\n     * 
\n */\n this.VBR_old_prepare = function (gfp, pe, ms_ener_ratio, ratio, l3_xmin, frameBits, min_bits,\n max_bits, bands) {\n var gfc = gfp.internal_flags;\n\n var masking_lower_db, adjust = 0.0;\n var analog_silence = 1;\n var bits = 0;\n\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var avg = rv.ResvFrameBegin(gfp, new MeanBits(0)) / gfc.mode_gr;\n\n get_framebits(gfp, frameBits);\n\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n var mxb = qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder_1.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n qupvt.reduce_side(max_bits[gr], ms_ener_ratio[gr], avg, mxb);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n\n if (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n // NORM, START or STOP type\n adjust = 1.28 / (1 + Math\n .exp(3.5 - pe[gr][ch] / 300.)) - 0.05;\n masking_lower_db = gfc.PSY.mask_adjust - adjust;\n } else {\n adjust = 2.56 / (1 + Math\n .exp(3.5 - pe[gr][ch] / 300.)) - 0.14;\n masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n }\n gfc.masking_lower = Math.pow(10.0,\n masking_lower_db * 0.1);\n\n init_outer_loop(gfc, cod_info);\n bands[gr][ch] = qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n l3_xmin[gr][ch]);\n if (bands[gr][ch] != 0)\n analog_silence = 0;\n\n min_bits[gr][ch] = 126;\n\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > frameBits[gfc.VBR_max_bitrate]) {\n max_bits[gr][ch] *= frameBits[gfc.VBR_max_bitrate];\n max_bits[gr][ch] /= bits;\n }\n if (min_bits[gr][ch] > max_bits[gr][ch])\n min_bits[gr][ch] = max_bits[gr][ch];\n\n }\n /* for ch */\n }\n /* for gr */\n\n return analog_silence;\n };\n\n this.bitpressure_strategy = function (gfc, l3_xmin, min_bits, max_bits) {\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var gi = gfc.l3_side.tt[gr][ch];\n var pxmin = l3_xmin[gr][ch];\n var pxminPos = 0;\n for (var sfb = 0; sfb < gi.psy_lmax; sfb++)\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder_1.SBMAX_l / Encoder_1.SBMAX_l;\n\n if (gi.block_type == Encoder_1.SHORT_TYPE) {\n for (var sfb = gi.sfb_smin; sfb < Encoder_1.SBMAX_s; sfb++) {\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder_1.SBMAX_s / Encoder_1.SBMAX_s;\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder_1.SBMAX_s / Encoder_1.SBMAX_s;\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder_1.SBMAX_s / Encoder_1.SBMAX_s;\n }\n }\n max_bits[gr][ch] = 0 | Math.max(min_bits[gr][ch],\n 0.9 * max_bits[gr][ch]);\n }\n }\n };\n\n this.VBR_new_prepare = function (gfp, pe, ratio, l3_xmin, frameBits, max_bits) {\n var gfc = gfp.internal_flags;\n\n var analog_silence = 1;\n var avg = 0, bits = 0;\n var maximum_framebits;\n\n if (!gfp.free_format) {\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n\n var mb = new MeanBits(avg);\n rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n\n get_framebits(gfp, frameBits);\n maximum_framebits = frameBits[gfc.VBR_max_bitrate];\n } else {\n gfc.bitrate_index = 0;\n var mb = new MeanBits(avg);\n maximum_framebits = rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n frameBits[0] = maximum_framebits;\n }\n\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder_1.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n\n gfc.masking_lower = Math.pow(10.0,\n gfc.PSY.mask_adjust * 0.1);\n\n init_outer_loop(gfc, cod_info);\n if (0 != qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n l3_xmin[gr][ch]))\n analog_silence = 0;\n\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > maximum_framebits) {\n max_bits[gr][ch] *= maximum_framebits;\n max_bits[gr][ch] /= bits;\n }\n\n }\n /* for ch */\n }\n /* for gr */\n\n return analog_silence;\n };\n\n /**\n * calculates target bits for ABR encoding\n *\n * mt 2000/05/31\n */\n this.calc_target_bits = function (gfp, pe, ms_ener_ratio, targ_bits, analog_silence_bits, max_frame_bits) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var res_factor;\n var gr, ch, totbits, mean_bits = 0;\n\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var mb = new MeanBits(mean_bits);\n max_frame_bits[0] = rv.ResvFrameBegin(gfp, mb);\n mean_bits = mb.bits;\n\n gfc.bitrate_index = 1;\n mean_bits = bs.getframebits(gfp) - gfc.sideinfo_len * 8;\n analog_silence_bits[0] = mean_bits / (gfc.mode_gr * gfc.channels_out);\n\n mean_bits = gfp.VBR_mean_bitrate_kbps * gfp.framesize * 1000;\n if ((gfc.substep_shaping & 1) != 0)\n mean_bits *= 1.09;\n mean_bits /= gfp.out_samplerate;\n mean_bits -= gfc.sideinfo_len * 8;\n mean_bits /= (gfc.mode_gr * gfc.channels_out);\n\n /**\n *
\n         *           res_factor is the percentage of the target bitrate that should\n         *           be used on average.  the remaining bits are added to the\n         *           bitreservoir and used for difficult to encode frames.\n         *\n         *           Since we are tracking the average bitrate, we should adjust\n         *           res_factor \"on the fly\", increasing it if the average bitrate\n         *           is greater than the requested bitrate, and decreasing it\n         *           otherwise.  Reasonable ranges are from .9 to 1.0\n         *\n         *           Until we get the above suggestion working, we use the following\n         *           tuning:\n         *           compression ratio    res_factor\n         *           5.5  (256kbps)         1.0      no need for bitreservoir\n         *           11   (128kbps)         .93      7% held for reservoir\n         *\n         *           with linear interpolation for other values.\n         * 
\n */\n res_factor = .93 + .07 * (11.0 - gfp.compression_ratio)\n / (11.0 - 5.5);\n if (res_factor < .90)\n res_factor = .90;\n if (res_factor > 1.00)\n res_factor = 1.00;\n\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] = (int)(res_factor * mean_bits);\n\n if (pe[gr][ch] > 700) {\n var add_bits = (int)((pe[gr][ch] - 700) / 1.4);\n\n var cod_info = l3_side.tt[gr][ch];\n targ_bits[gr][ch] = (int)(res_factor * mean_bits);\n\n /* short blocks use a little extra, no matter what the pe */\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n if (add_bits < mean_bits / 2)\n add_bits = mean_bits / 2;\n }\n /* at most increase bits by 1.5*average */\n if (add_bits > mean_bits * 3 / 2)\n add_bits = mean_bits * 3 / 2;\n else if (add_bits < 0)\n add_bits = 0;\n\n targ_bits[gr][ch] += add_bits;\n }\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n }\n sum += targ_bits[gr][ch];\n }\n /* for ch */\n if (sum > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[gr][ch] *= LameInternalFlags.MAX_BITS_PER_GRANULE;\n targ_bits[gr][ch] /= sum;\n }\n }\n }\n /* for gr */\n\n if (gfc.mode_ext == Encoder_1.MPG_MD_MS_LR)\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.reduce_side(targ_bits[gr], ms_ener_ratio[gr], mean_bits\n * gfc.channels_out,\n LameInternalFlags.MAX_BITS_PER_GRANULE);\n }\n\n /*\n * sum target bits\n */\n totbits = 0;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL)\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n totbits += targ_bits[gr][ch];\n }\n }\n\n /*\n * repartion target bits if needed\n */\n if (totbits > max_frame_bits[0]) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] *= max_frame_bits[0];\n targ_bits[gr][ch] /= totbits;\n }\n }\n }\n };\n\n}\n\nvar Quantize_1 = Quantize$1;\n\n/*\n * bit reservoir source file\n *\n * Copyright (c) 1999-2000 Mark Taylor\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Reservoir.java,v 1.9 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n/**\n * ResvFrameBegin:
\n * Called (repeatedly) at the beginning of a frame. Updates the maximum size of\n * the reservoir, and checks to make sure main_data_begin was set properly by\n * the formatter
\n * Background information:\n * \n * This is the original text from the ISO standard. Because of sooo many bugs\n * and irritations correcting comments are added in brackets []. A '^W' means\n * you should remove the last word.\n * \n *
\n *  1. The following rule can be used to calculate the maximum\n *     number of bits used for one granule [^W frame]:
\n * At the highest possible bitrate of Layer III (320 kbps\n * per stereo signal [^W^W^W], 48 kHz) the frames must be of\n * [^W^W^W are designed to have] constant length, i.e.\n * one buffer [^W^W the frame] length is:
\n * \n * 320 kbps * 1152/48 kHz = 7680 bit = 960 byte\n * \n * This value is used as the maximum buffer per channel [^W^W] at\n * lower bitrates [than 320 kbps]. At 64 kbps mono or 128 kbps\n * stereo the main granule length is 64 kbps * 576/48 kHz = 768 bit\n * [per granule and channel] at 48 kHz sampling frequency.\n * This means that there is a maximum deviation (short time buffer\n * [= reservoir]) of 7680 - 2*2*768 = 4608 bits is allowed at 64 kbps.\n * The actual deviation is equal to the number of bytes [with the\n * meaning of octets] denoted by the main_data_end offset pointer.\n * The actual maximum deviation is (2^9-1)*8 bit = 4088 bits\n * [for MPEG-1 and (2^8-1)*8 bit for MPEG-2, both are hard limits].\n * ... The xchange of buffer bits between the left and right channel\n * is allowed without restrictions [exception: dual channel].\n * Because of the [constructed] constraint on the buffer size\n * main_data_end is always set to 0 in the case of bit_rate_index==14,\n * i.e. data rate 320 kbps per stereo signal [^W^W^W]. In this case\n * all data are allocated between adjacent header [^W sync] words\n * [, i.e. there is no buffering at all].\n *
\n */\n\n\nvar assert$23 = common.assert;\n\nfunction Reservoir$1() {\n\tvar bs;\n\n\tthis.setModules = function(_bs) {\n\t\tbs = _bs;\n\t};\n\n\tthis.ResvFrameBegin = function(gfp, mean_bits) {\n\t\tvar gfc = gfp.internal_flags;\n\t\tvar maxmp3buf;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tvar frameLength = bs.getframebits(gfp);\n\t\tmean_bits.bits = (frameLength - gfc.sideinfo_len * 8) / gfc.mode_gr;\n\n\t\t/**\n\t\t *
\n\t\t *  Meaning of the variables:\n\t\t *      resvLimit: (0, 8, ..., 8*255 (MPEG-2), 8*511 (MPEG-1))\n\t\t *          Number of bits can be stored in previous frame(s) due to\n\t\t *          counter size constaints\n\t\t *      maxmp3buf: ( ??? ... 8*1951 (MPEG-1 and 2), 8*2047 (MPEG-2.5))\n\t\t *          Number of bits allowed to encode one frame (you can take 8*511 bit\n\t\t *          from the bit reservoir and at most 8*1440 bit from the current\n\t\t *          frame (320 kbps, 32 kHz), so 8*1951 bit is the largest possible\n\t\t *          value for MPEG-1 and -2)\n\t\t * \n\t\t *          maximum allowed granule/channel size times 4 = 8*2047 bits.,\n\t\t *          so this is the absolute maximum supported by the format.\n\t\t * \n\t\t * \n\t\t *      fullFrameBits:  maximum number of bits available for encoding\n\t\t *                      the current frame.\n\t\t * \n\t\t *      mean_bits:      target number of bits per granule.\n\t\t * \n\t\t *      frameLength:\n\t\t * \n\t\t *      gfc.ResvMax:   maximum allowed reservoir\n\t\t * \n\t\t *      gfc.ResvSize:  current reservoir size\n\t\t * \n\t\t *      l3_side.resvDrain_pre:\n\t\t *         ancillary data to be added to previous frame:\n\t\t *         (only usefull in VBR modes if it is possible to have\n\t\t *         maxmp3buf < fullFrameBits)).  Currently disabled,\n\t\t *         see #define NEW_DRAIN\n\t\t *         2010-02-13: RH now enabled, it seems to be needed for CBR too,\n\t\t *                     as there exists one example, where the FhG decoder\n\t\t *                     can't decode a -b320 CBR file anymore.\n\t\t * \n\t\t *      l3_side.resvDrain_post:\n\t\t *         ancillary data to be added to this frame:\n\t\t * \n\t\t * 
\n\t\t */\n\n\t\t/* main_data_begin has 9 bits in MPEG-1, 8 bits MPEG-2 */\n\t\tvar resvLimit = (8 * 256) * gfc.mode_gr - 8;\n\n\t\t/*\n\t\t * maximum allowed frame size. dont use more than this number of bits,\n\t\t * even if the frame has the space for them:\n\t\t */\n\t\tif (gfp.brate > 320) {\n\t\t\t/* in freeformat the buffer is constant */\n\t\t\tmaxmp3buf = 8 * ((int) ((gfp.brate * 1000)\n\t\t\t\t\t/ (gfp.out_samplerate / 1152) / 8 + .5));\n\t\t} else {\n\t\t\t/*\n\t\t\t * all mp3 decoders should have enough buffer to handle this value:\n\t\t\t * size of a 320kbps 32kHz frame\n\t\t\t */\n\t\t\tmaxmp3buf = 8 * 1440;\n\n\t\t\t/*\n\t\t\t * Bouvigne suggests this more lax interpretation of the ISO doc\n\t\t\t * instead of using 8*960.\n\t\t\t */\n\n\t\t\tif (gfp.strict_ISO) {\n\t\t\t\tmaxmp3buf = 8 * ((int) (320000 / (gfp.out_samplerate / 1152) / 8 + .5));\n\t\t\t}\n\t\t}\n\n\t\tgfc.ResvMax = maxmp3buf - frameLength;\n\t\tif (gfc.ResvMax > resvLimit)\n\t\t\tgfc.ResvMax = resvLimit;\n\t\tif (gfc.ResvMax < 0 || gfp.disable_reservoir)\n\t\t\tgfc.ResvMax = 0;\n\n\t\tvar fullFrameBits = mean_bits.bits * gfc.mode_gr\n\t\t\t\t+ Math.min(gfc.ResvSize, gfc.ResvMax);\n\n\t\tif (fullFrameBits > maxmp3buf)\n\t\t\tfullFrameBits = maxmp3buf;\n\n\t\tassert$23 (0 == gfc.ResvMax % 8);\n\t\tassert$23 (gfc.ResvMax >= 0);\n\n\t\tl3_side.resvDrain_pre = 0;\n\n\t\t// frame analyzer code\n\t\tif (gfc.pinfo != null) {\n\t\t\t/*\n\t\t\t * expected bits per channel per granule [is this also right for\n\t\t\t * mono/stereo, MPEG-1/2 ?]\n\t\t\t */\n\t\t\tgfc.pinfo.mean_bits = mean_bits.bits / 2;\n\t\t\tgfc.pinfo.resvsize = gfc.ResvSize;\n\t\t}\n\n\t\treturn fullFrameBits;\n\t};\n\n\t/**\n\t * returns targ_bits: target number of bits to use for 1 granule
\n\t * extra_bits: amount extra available from reservoir
\n\t * Mark Taylor 4/99\n\t */\n\tthis.ResvMaxBits = function(gfp, mean_bits, targ_bits, cbr) {\n\t\tvar gfc = gfp.internal_flags;\n\t\tvar add_bits;\n var ResvSize = gfc.ResvSize, ResvMax = gfc.ResvMax;\n\n\t\t/* compensate the saved bits used in the 1st granule */\n\t\tif (cbr != 0)\n\t\t\tResvSize += mean_bits;\n\n\t\tif ((gfc.substep_shaping & 1) != 0)\n\t\t\tResvMax *= 0.9;\n\n\t\ttarg_bits.bits = mean_bits;\n\n\t\t/* extra bits if the reservoir is almost full */\n\t\tif (ResvSize * 10 > ResvMax * 9) {\n\t\t\tadd_bits = ResvSize - (ResvMax * 9) / 10;\n\t\t\ttarg_bits.bits += add_bits;\n\t\t\tgfc.substep_shaping |= 0x80;\n\t\t} else {\n\t\t\tadd_bits = 0;\n\t\t\tgfc.substep_shaping &= 0x7f;\n\t\t\t/*\n\t\t\t * build up reservoir. this builds the reservoir a little slower\n\t\t\t * than FhG. It could simple be mean_bits/15, but this was rigged to\n\t\t\t * always produce 100 (the old value) at 128kbs\n\t\t\t */\n\t\t\tif (!gfp.disable_reservoir && 0 == (gfc.substep_shaping & 1))\n\t\t\t\ttarg_bits.bits -= .1 * mean_bits;\n\t\t}\n\n\t\t/* amount from the reservoir we are allowed to use. ISO says 6/10 */\n\t\tvar extra_bits = (ResvSize < (gfc.ResvMax * 6) / 10 ? ResvSize\n\t\t\t\t: (gfc.ResvMax * 6) / 10);\n\t\textra_bits -= add_bits;\n\n\t\tif (extra_bits < 0)\n\t\t\textra_bits = 0;\n\t\treturn extra_bits;\n\t};\n\n\t/**\n\t * Called after a granule's bit allocation. Readjusts the size of the\n\t * reservoir to reflect the granule's usage.\n\t */\n\tthis.ResvAdjust = function(gfc, gi) {\n\t\tgfc.ResvSize -= gi.part2_3_length + gi.part2_length;\n\t};\n\n\t/**\n\t * Called after all granules in a frame have been allocated. Makes sure that\n\t * the reservoir size is within limits, possibly by adding stuffing bits.\n\t */\n\tthis.ResvFrameEnd = function(gfc, mean_bits) {\n\t\tvar over_bits;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tgfc.ResvSize += mean_bits * gfc.mode_gr;\n\t\tvar stuffingBits = 0;\n\t\tl3_side.resvDrain_post = 0;\n\t\tl3_side.resvDrain_pre = 0;\n\n\t\t/* we must be byte aligned */\n\t\tif ((over_bits = gfc.ResvSize % 8) != 0)\n\t\t\tstuffingBits += over_bits;\n\n\t\tover_bits = (gfc.ResvSize - stuffingBits) - gfc.ResvMax;\n\t\tif (over_bits > 0) {\n\t\t\tassert$23 (0 == over_bits % 8);\n\t\t\tassert$23 (over_bits >= 0);\n\t\t\tstuffingBits += over_bits;\n\t\t}\n\n\t\t/*\n\t\t * NOTE: enabling the NEW_DRAIN code fixes some problems with FhG\n\t\t * decoder shipped with MS Windows operating systems. Using this, it is\n\t\t * even possible to use Gabriel's lax buffer consideration again, which\n\t\t * assumes, any decoder should have a buffer large enough for a 320 kbps\n\t\t * frame at 32 kHz sample rate.\n\t\t * \n\t\t * old drain code: lame -b320 BlackBird.wav --. does not play with\n\t\t * GraphEdit.exe using FhG decoder V1.5 Build 50\n\t\t * \n\t\t * new drain code: lame -b320 BlackBird.wav --. plays fine with\n\t\t * GraphEdit.exe using FhG decoder V1.5 Build 50\n\t\t * \n\t\t * Robert Hegemann, 2010-02-13.\n\t\t */\n\t\t/*\n\t\t * drain as many bits as possible into previous frame ancillary data In\n\t\t * particular, in VBR mode ResvMax may have changed, and we have to make\n\t\t * sure main_data_begin does not create a reservoir bigger than ResvMax\n\t\t * mt 4/00\n\t\t */\n\t\t{\n\t\t\tvar mdb_bytes = Math.min(l3_side.main_data_begin * 8, stuffingBits) / 8;\n\t\t\tl3_side.resvDrain_pre += 8 * mdb_bytes;\n\t\t\tstuffingBits -= 8 * mdb_bytes;\n\t\t\tgfc.ResvSize -= 8 * mdb_bytes;\n\t\t\tl3_side.main_data_begin -= mdb_bytes;\n\t\t}\n\t\t/* drain the rest into this frames ancillary data */\n\t\tl3_side.resvDrain_post += stuffingBits;\n\t\tgfc.ResvSize -= stuffingBits;\n\t};\n}\n\nvar Reservoir_1 = Reservoir$1;\n\nfunction Version() {\n\n /**\n * URL for the LAME website.\n */\n var LAME_URL = \"http://www.mp3dev.org/\";\n\n /**\n * Major version number.\n */\n var LAME_MAJOR_VERSION = 3;\n /**\n * Minor version number.\n */\n var LAME_MINOR_VERSION = 98;\n /**\n * Patch level.\n */\n var LAME_PATCH_VERSION = 4;\n\n /**\n * Major version number.\n */\n var PSY_MAJOR_VERSION = 0;\n /**\n * Minor version number.\n */\n var PSY_MINOR_VERSION = 93;\n\n /**\n * A string which describes the version of LAME.\n *\n * @return string which describes the version of LAME\n */\n this.getLameVersion = function () {\n // primary to write screen reports\n return (LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION);\n };\n\n /**\n * The short version of the LAME version string.\n *\n * @return short version of the LAME version string\n */\n this.getLameShortVersion = function () {\n // Adding date and time to version string makes it harder for output\n // validation\n return (LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION);\n };\n\n /**\n * The shortest version of the LAME version string.\n *\n * @return shortest version of the LAME version string\n */\n this.getLameVeryShortVersion = function () {\n // Adding date and time to version string makes it harder for output\n return (\"LAME\" + LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \"r\");\n };\n\n /**\n * String which describes the version of GPSYCHO\n *\n * @return string which describes the version of GPSYCHO\n */\n this.getPsyVersion = function () {\n return (PSY_MAJOR_VERSION + \".\" + PSY_MINOR_VERSION);\n };\n\n /**\n * String which is a URL for the LAME website.\n *\n * @return string which is a URL for the LAME website\n */\n this.getLameUrl = function () {\n return LAME_URL;\n };\n\n /**\n * Quite useless for a java version, however we are compatible ;-)\n *\n * @return \"32bits\"\n */\n this.getLameOsBitness = function () {\n return \"32bits\";\n };\n\n}\n\nvar Version_1 = Version;\n\nvar System$22 = common.System;\nvar VbrMode$22 = common.VbrMode;\nvar ShortBlock$22 = common.ShortBlock;\nvar Arrays$22 = common.Arrays;\nvar new_byte$22 = common.new_byte;\nvar assert$24 = common.assert;\n\n/**\n * A Vbr header may be present in the ancillary data field of the first frame of\n * an mp3 bitstream
\n * The Vbr header (optionally) contains\n *
    \n *
  • frames total number of audio frames in the bitstream\n *
  • bytes total number of bytes in the bitstream\n *
  • toc table of contents\n *
\n *\n * toc (table of contents) gives seek points for random access.
\n * The ith entry determines the seek point for i-percent duration.
\n * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes
\n * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes\n */\nVBRTag.NUMTOCENTRIES = 100;\nVBRTag.MAXFRAMESIZE = 2880;\n\nfunction VBRTag() {\n\n var lame;\n var bs;\n var v;\n\n this.setModules = function (_lame, _bs, _v) {\n lame = _lame;\n bs = _bs;\n v = _v;\n };\n\n var FRAMES_FLAG = 0x0001;\n var BYTES_FLAG = 0x0002;\n var TOC_FLAG = 0x0004;\n var VBR_SCALE_FLAG = 0x0008;\n\n var NUMTOCENTRIES = VBRTag.NUMTOCENTRIES;\n\n /**\n * (0xB40) the max freeformat 640 32kHz framesize.\n */\n var MAXFRAMESIZE = VBRTag.MAXFRAMESIZE;\n\n /**\n *
\n     *    4 bytes for Header Tag\n     *    4 bytes for Header Flags\n     *  100 bytes for entry (toc)\n     *    4 bytes for frame size\n     *    4 bytes for stream size\n     *    4 bytes for VBR scale. a VBR quality indicator: 0=best 100=worst\n     *   20 bytes for LAME tag.  for example, \"LAME3.12 (beta 6)\"\n     * ___________\n     *  140 bytes\n     * 
\n */\n var VBRHEADERSIZE = (NUMTOCENTRIES + 4 + 4 + 4 + 4 + 4);\n\n var LAMEHEADERSIZE = (VBRHEADERSIZE + 9 + 1 + 1 + 8\n + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2);\n\n /**\n * The size of the Xing header MPEG-1, bit rate in kbps.\n */\n var XING_BITRATE1 = 128;\n /**\n * The size of the Xing header MPEG-2, bit rate in kbps.\n */\n var XING_BITRATE2 = 64;\n /**\n * The size of the Xing header MPEG-2.5, bit rate in kbps.\n */\n var XING_BITRATE25 = 32;\n\n /**\n * ISO-8859-1 charset for byte to string operations.\n */\n var ISO_8859_1 = null; //Charset.forName(\"ISO-8859-1\");\n\n /**\n * VBR header magic string.\n */\n var VBRTag0 = \"Xing\";\n /**\n * VBR header magic string (VBR == VBRMode.vbr_off).\n */\n var VBRTag1 = \"Info\";\n\n /**\n * Lookup table for fast CRC-16 computation. Uses the polynomial\n * x^16+x^15+x^2+1\n */\n var crc16Lookup = [0x0000, 0xC0C1, 0xC181, 0x0140,\n 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741,\n 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41,\n 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40,\n 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941,\n 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40,\n 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540,\n 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341,\n 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141,\n 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740,\n 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40,\n 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41,\n 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940,\n 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41,\n 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541,\n 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340,\n 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141,\n 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740,\n 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40,\n 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41,\n 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1, 0xB981, 0x7940,\n 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41,\n 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541,\n 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340,\n 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140,\n 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741,\n 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41,\n 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40,\n 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941,\n 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40,\n 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540,\n 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341,\n 0x4100, 0x81C1, 0x8081, 0x4040];\n\n /***********************************************************************\n * Robert Hegemann 2001-01-17\n ***********************************************************************/\n\n function addVbr(v, bitrate) {\n v.nVbrNumFrames++;\n v.sum += bitrate;\n v.seen++;\n\n if (v.seen < v.want) {\n return;\n }\n\n if (v.pos < v.size) {\n v.bag[v.pos] = v.sum;\n v.pos++;\n v.seen = 0;\n }\n if (v.pos == v.size) {\n for (var i = 1; i < v.size; i += 2) {\n v.bag[i / 2] = v.bag[i];\n }\n v.want *= 2;\n v.pos /= 2;\n }\n }\n\n function xingSeekTable(v, t) {\n if (v.pos <= 0)\n return;\n\n for (var i = 1; i < NUMTOCENTRIES; ++i) {\n var j = i / NUMTOCENTRIES, act, sum;\n var indx = 0 | (Math.floor(j * v.pos));\n if (indx > v.pos - 1)\n indx = v.pos - 1;\n act = v.bag[indx];\n sum = v.sum;\n var seek_point = 0 | (256. * act / sum);\n if (seek_point > 255)\n seek_point = 255;\n t[i] = 0xff & seek_point;\n }\n }\n\n /**\n * Add VBR entry, used to fill the VBR TOC entries.\n *\n * @param gfp\n * global flags\n */\n this.addVbrFrame = function (gfp) {\n var gfc = gfp.internal_flags;\n var kbps = Tables.bitrate_table[gfp.version][gfc.bitrate_index];\n assert$24(gfc.VBR_seek_table.bag != null);\n addVbr(gfc.VBR_seek_table, kbps);\n };\n\n /**\n * Read big endian integer (4-bytes) from header.\n *\n * @param buf\n * header containing the integer\n * @param bufPos\n * offset into the header\n * @return extracted integer\n */\n function extractInteger(buf, bufPos) {\n var x = buf[bufPos + 0] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 1] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 2] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 3] & 0xff;\n return x;\n }\n\n /**\n * Write big endian integer (4-bytes) in the header.\n *\n * @param buf\n * header to write the integer into\n * @param bufPos\n * offset into the header\n * @param value\n * integer value to write\n */\n function createInteger(buf, bufPos, value) {\n buf[bufPos + 0] = 0xff & ((value >> 24) & 0xff);\n buf[bufPos + 1] = 0xff & ((value >> 16) & 0xff);\n buf[bufPos + 2] = 0xff & ((value >> 8) & 0xff);\n buf[bufPos + 3] = 0xff & (value & 0xff);\n }\n\n /**\n * Write big endian short (2-bytes) in the header.\n *\n * @param buf\n * header to write the integer into\n * @param bufPos\n * offset into the header\n * @param value\n * integer value to write\n */\n function createShort(buf, bufPos, value) {\n buf[bufPos + 0] = 0xff & ((value >> 8) & 0xff);\n buf[bufPos + 1] = 0xff & (value & 0xff);\n }\n\n /**\n * Check for magic strings (Xing/Info).\n *\n * @param buf\n * header to check\n * @param bufPos\n * header offset to check\n * @return magic string found\n */\n function isVbrTag(buf, bufPos) {\n return new String(buf, bufPos, VBRTag0.length(), ISO_8859_1)\n .equals(VBRTag0)\n || new String(buf, bufPos, VBRTag1.length(), ISO_8859_1)\n .equals(VBRTag1);\n }\n\n function shiftInBitsValue(x, n, v) {\n return 0xff & ((x << n) | (v & ~(-1 << n)));\n }\n\n /**\n * Construct the MP3 header using the settings of the global flags.\n *\n * \n *\n * @param gfp\n * global flags\n * @param buffer\n * header\n */\n function setLameTagFrameHeader(gfp, buffer) {\n var gfc = gfp.internal_flags;\n\n // MP3 Sync Word\n buffer[0] = shiftInBitsValue(buffer[0], 8, 0xff);\n\n buffer[1] = shiftInBitsValue(buffer[1], 3, 7);\n buffer[1] = shiftInBitsValue(buffer[1], 1,\n (gfp.out_samplerate < 16000) ? 0 : 1);\n // Version\n buffer[1] = shiftInBitsValue(buffer[1], 1, gfp.version);\n // 01 == Layer 3\n buffer[1] = shiftInBitsValue(buffer[1], 2, 4 - 3);\n // Error protection\n buffer[1] = shiftInBitsValue(buffer[1], 1, (!gfp.error_protection) ? 1\n : 0);\n\n // Bit rate\n buffer[2] = shiftInBitsValue(buffer[2], 4, gfc.bitrate_index);\n // Frequency\n buffer[2] = shiftInBitsValue(buffer[2], 2, gfc.samplerate_index);\n // Pad. Bit\n buffer[2] = shiftInBitsValue(buffer[2], 1, 0);\n // Priv. Bit\n buffer[2] = shiftInBitsValue(buffer[2], 1, gfp.extension);\n\n // Mode\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.mode.ordinal());\n // Mode extension (Used with Joint Stereo)\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfc.mode_ext);\n // Copy\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.copyright);\n // Original\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.original);\n // Emphasis\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.emphasis);\n\n /* the default VBR header. 48 kbps layer III, no padding, no crc */\n /* but sampling freq, mode and copyright/copy protection taken */\n /* from first valid frame */\n buffer[0] = 0xff;\n var abyte = 0xff & (buffer[1] & 0xf1);\n var bitrate;\n if (1 == gfp.version) {\n bitrate = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16000)\n bitrate = XING_BITRATE25;\n else\n bitrate = XING_BITRATE2;\n }\n\n if (gfp.VBR == VbrMode$22.vbr_off)\n bitrate = gfp.brate;\n\n var bbyte;\n if (gfp.free_format)\n bbyte = 0x00;\n else\n bbyte = 0xff & (16 * lame.BitrateIndex(bitrate, gfp.version,\n gfp.out_samplerate));\n\n /*\n * Use as much of the info from the real frames in the Xing header:\n * samplerate, channels, crc, etc...\n */\n if (gfp.version == 1) {\n /* MPEG1 */\n buffer[1] = 0xff & (abyte | 0x0a);\n /* was 0x0b; */\n abyte = 0xff & (buffer[2] & 0x0d);\n /* AF keep also private bit */\n buffer[2] = 0xff & (bbyte | abyte);\n /* 64kbs MPEG1 frame */\n } else {\n /* MPEG2 */\n buffer[1] = 0xff & (abyte | 0x02);\n /* was 0x03; */\n abyte = 0xff & (buffer[2] & 0x0d);\n /* AF keep also private bit */\n buffer[2] = 0xff & (bbyte | abyte);\n /* 64kbs MPEG2 frame */\n }\n }\n\n /**\n * Get VBR tag information\n *\n * @param buf\n * header to analyze\n * @param bufPos\n * offset into the header\n * @return VBR tag data\n */\n this.getVbrTag = function (buf) {\n var pTagData = new VBRTagData();\n var bufPos = 0;\n\n /* get Vbr header data */\n pTagData.flags = 0;\n\n /* get selected MPEG header data */\n var hId = (buf[bufPos + 1] >> 3) & 1;\n var hSrIndex = (buf[bufPos + 2] >> 2) & 3;\n var hMode = (buf[bufPos + 3] >> 6) & 3;\n var hBitrate = ((buf[bufPos + 2] >> 4) & 0xf);\n hBitrate = Tables.bitrate_table[hId][hBitrate];\n\n /* check for FFE syncword */\n if ((buf[bufPos + 1] >> 4) == 0xE)\n pTagData.samprate = Tables.samplerate_table[2][hSrIndex];\n else\n pTagData.samprate = Tables.samplerate_table[hId][hSrIndex];\n\n /* determine offset of header */\n if (hId != 0) {\n /* mpeg1 */\n if (hMode != 3)\n bufPos += (32 + 4);\n else\n bufPos += (17 + 4);\n } else {\n /* mpeg2 */\n if (hMode != 3)\n bufPos += (17 + 4);\n else\n bufPos += (9 + 4);\n }\n\n if (!isVbrTag(buf, bufPos))\n return null;\n\n bufPos += 4;\n\n pTagData.hId = hId;\n\n /* get flags */\n var head_flags = pTagData.flags = extractInteger(buf, bufPos);\n bufPos += 4;\n\n if ((head_flags & FRAMES_FLAG) != 0) {\n pTagData.frames = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n if ((head_flags & BYTES_FLAG) != 0) {\n pTagData.bytes = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n if ((head_flags & TOC_FLAG) != 0) {\n if (pTagData.toc != null) {\n for (var i = 0; i < NUMTOCENTRIES; i++)\n pTagData.toc[i] = buf[bufPos + i];\n }\n bufPos += NUMTOCENTRIES;\n }\n\n pTagData.vbrScale = -1;\n\n if ((head_flags & VBR_SCALE_FLAG) != 0) {\n pTagData.vbrScale = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n pTagData.headersize = ((hId + 1) * 72000 * hBitrate)\n / pTagData.samprate;\n\n bufPos += 21;\n var encDelay = buf[bufPos + 0] << 4;\n encDelay += buf[bufPos + 1] >> 4;\n var encPadding = (buf[bufPos + 1] & 0x0F) << 8;\n encPadding += buf[bufPos + 2] & 0xff;\n /* check for reasonable values (this may be an old Xing header, */\n /* not a INFO tag) */\n if (encDelay < 0 || encDelay > 3000)\n encDelay = -1;\n if (encPadding < 0 || encPadding > 3000)\n encPadding = -1;\n\n pTagData.encDelay = encDelay;\n pTagData.encPadding = encPadding;\n\n /* success */\n return pTagData;\n };\n\n /**\n * Initializes the header\n *\n * @param gfp\n * global flags\n */\n this.InitVbrTag = function (gfp) {\n var gfc = gfp.internal_flags;\n\n /**\n *
\n         * Xing VBR pretends to be a 48kbs layer III frame.  (at 44.1kHz).\n         * (at 48kHz they use 56kbs since 48kbs frame not big enough for\n         * table of contents)\n         * let's always embed Xing header inside a 64kbs layer III frame.\n         * this gives us enough room for a LAME version string too.\n         * size determined by sampling frequency (MPEG1)\n         * 32kHz:    216 bytes@48kbs    288bytes@ 64kbs\n         * 44.1kHz:  156 bytes          208bytes@64kbs     (+1 if padding = 1)\n         * 48kHz:    144 bytes          192\n         *\n         * MPEG 2 values are the same since the framesize and samplerate\n         * are each reduced by a factor of 2.\n         * 
\n */\n var kbps_header;\n if (1 == gfp.version) {\n kbps_header = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16000)\n kbps_header = XING_BITRATE25;\n else\n kbps_header = XING_BITRATE2;\n }\n\n if (gfp.VBR == VbrMode$22.vbr_off)\n kbps_header = gfp.brate;\n\n // make sure LAME Header fits into Frame\n var totalFrameSize = ((gfp.version + 1) * 72000 * kbps_header)\n / gfp.out_samplerate;\n var headerSize = (gfc.sideinfo_len + LAMEHEADERSIZE);\n gfc.VBR_seek_table.TotalFrameSize = totalFrameSize;\n if (totalFrameSize < headerSize || totalFrameSize > MAXFRAMESIZE) {\n /* disable tag, it wont fit */\n gfp.bWriteVbrTag = false;\n return;\n }\n\n gfc.VBR_seek_table.nVbrNumFrames = 0;\n gfc.VBR_seek_table.nBytesWritten = 0;\n gfc.VBR_seek_table.sum = 0;\n\n gfc.VBR_seek_table.seen = 0;\n gfc.VBR_seek_table.want = 1;\n gfc.VBR_seek_table.pos = 0;\n\n if (gfc.VBR_seek_table.bag == null) {\n gfc.VBR_seek_table.bag = new int[400];\n gfc.VBR_seek_table.size = 400;\n }\n\n // write dummy VBR tag of all 0's into bitstream\n var buffer = new_byte$22(MAXFRAMESIZE);\n\n setLameTagFrameHeader(gfp, buffer);\n var n = gfc.VBR_seek_table.TotalFrameSize;\n for (var i = 0; i < n; ++i) {\n bs.add_dummy_byte(gfp, buffer[i] & 0xff, 1);\n }\n };\n\n /**\n * Fast CRC-16 computation (uses table crc16Lookup).\n *\n * @param value\n * @param crc\n * @return\n */\n function crcUpdateLookup(value, crc) {\n var tmp = crc ^ value;\n crc = (crc >> 8) ^ crc16Lookup[tmp & 0xff];\n return crc;\n }\n\n this.updateMusicCRC = function (crc, buffer, bufferPos, size) {\n for (var i = 0; i < size; ++i)\n crc[0] = crcUpdateLookup(buffer[bufferPos + i], crc[0]);\n };\n\n /**\n * Write LAME info: mini version + info on various switches used (Jonathan\n * Dee 2001/08/31).\n *\n * @param gfp\n * global flags\n * @param musicLength\n * music length\n * @param streamBuffer\n * pointer to output buffer\n * @param streamBufferPos\n * offset into the output buffer\n * @param crc\n * computation of CRC-16 of Lame Tag so far (starting at frame\n * sync)\n * @return number of bytes written to the stream\n */\n function putLameVBR(gfp, musicLength, streamBuffer, streamBufferPos, crc) {\n var gfc = gfp.internal_flags;\n var bytesWritten = 0;\n\n /* encoder delay */\n var encDelay = gfp.encoder_delay;\n /* encoder padding */\n var encPadding = gfp.encoder_padding;\n\n /* recall: gfp.VBR_q is for example set by the switch -V */\n /* gfp.quality by -q, -h, -f, etc */\n var quality = (100 - 10 * gfp.VBR_q - gfp.quality);\n\n var version = v.getLameVeryShortVersion();\n var vbr;\n var revision = 0x00;\n var revMethod;\n // numbering different in vbr_mode vs. Lame tag\n var vbrTypeTranslator = [1, 5, 3, 2, 4, 0, 3];\n var lowpass = 0 | (((gfp.lowpassfreq / 100.0) + .5) > 255 ? 255\n : (gfp.lowpassfreq / 100.0) + .5);\n var peakSignalAmplitude = 0;\n var radioReplayGain = 0;\n var audiophileReplayGain = 0;\n var noiseShaping = gfp.internal_flags.noise_shaping;\n var stereoMode = 0;\n var nonOptimal = 0;\n var sourceFreq = 0;\n var misc = 0;\n var musicCRC = 0;\n\n // psy model type: Gpsycho or NsPsytune\n var expNPsyTune = (gfp.exp_nspsytune & 1) != 0;\n var safeJoint = (gfp.exp_nspsytune & 2) != 0;\n var noGapMore = false;\n var noGapPrevious = false;\n var noGapCount = gfp.internal_flags.nogap_total;\n var noGapCurr = gfp.internal_flags.nogap_current;\n\n // 4 bits\n var athType = gfp.ATHtype;\n var flags = 0;\n\n // vbr modes\n var abrBitrate;\n switch (gfp.VBR) {\n case vbr_abr:\n abrBitrate = gfp.VBR_mean_bitrate_kbps;\n break;\n case vbr_off:\n abrBitrate = gfp.brate;\n break;\n default:\n abrBitrate = gfp.VBR_min_bitrate_kbps;\n }\n\n // revision and vbr method\n if (gfp.VBR.ordinal() < vbrTypeTranslator.length)\n vbr = vbrTypeTranslator[gfp.VBR.ordinal()];\n else\n vbr = 0x00; // unknown\n\n revMethod = 0x10 * revision + vbr;\n\n // ReplayGain\n if (gfc.findReplayGain) {\n if (gfc.RadioGain > 0x1FE)\n gfc.RadioGain = 0x1FE;\n if (gfc.RadioGain < -0x1FE)\n gfc.RadioGain = -0x1FE;\n\n // set name code\n radioReplayGain = 0x2000;\n // set originator code to `determined automatically'\n radioReplayGain |= 0xC00;\n\n if (gfc.RadioGain >= 0) {\n // set gain adjustment\n radioReplayGain |= gfc.RadioGain;\n } else {\n // set the sign bit\n radioReplayGain |= 0x200;\n // set gain adjustment\n radioReplayGain |= -gfc.RadioGain;\n }\n }\n\n // peak sample\n if (gfc.findPeakSample)\n peakSignalAmplitude = Math\n .abs(0 | ((( gfc.PeakSample) / 32767.0) * Math.pow(2, 23) + .5));\n\n // nogap\n if (noGapCount != -1) {\n if (noGapCurr > 0)\n noGapPrevious = true;\n\n if (noGapCurr < noGapCount - 1)\n noGapMore = true;\n }\n\n // flags\n flags = athType + ((expNPsyTune ? 1 : 0) << 4)\n + ((safeJoint ? 1 : 0) << 5) + ((noGapMore ? 1 : 0) << 6)\n + ((noGapPrevious ? 1 : 0) << 7);\n\n if (quality < 0)\n quality = 0;\n\n // stereo mode field (Intensity stereo is not implemented)\n switch (gfp.mode) {\n case MONO:\n stereoMode = 0;\n break;\n case STEREO:\n stereoMode = 1;\n break;\n case DUAL_CHANNEL:\n stereoMode = 2;\n break;\n case JOINT_STEREO:\n if (gfp.force_ms)\n stereoMode = 4;\n else\n stereoMode = 3;\n break;\n case NOT_SET:\n //$FALL-THROUGH$\n default:\n stereoMode = 7;\n break;\n }\n\n if (gfp.in_samplerate <= 32000)\n sourceFreq = 0x00;\n else if (gfp.in_samplerate == 48000)\n sourceFreq = 0x02;\n else if (gfp.in_samplerate > 48000)\n sourceFreq = 0x03;\n else {\n // default is 44100Hz\n sourceFreq = 0x01;\n }\n\n // Check if the user overrided the default LAME behavior with some\n // nasty options\n if (gfp.short_blocks == ShortBlock$22.short_block_forced\n || gfp.short_blocks == ShortBlock$22.short_block_dispensed\n || ((gfp.lowpassfreq == -1) && (gfp.highpassfreq == -1)) || /* \"-k\" */\n (gfp.scale_left < gfp.scale_right)\n || (gfp.scale_left > gfp.scale_right)\n || (gfp.disable_reservoir && gfp.brate < 320) || gfp.noATH\n || gfp.ATHonly || (athType == 0) || gfp.in_samplerate <= 32000)\n nonOptimal = 1;\n\n misc = noiseShaping + (stereoMode << 2) + (nonOptimal << 5)\n + (sourceFreq << 6);\n\n musicCRC = gfc.nMusicCRC;\n\n // Write all this information into the stream\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten, quality);\n bytesWritten += 4;\n\n for (var j = 0; j < 9; j++) {\n streamBuffer[streamBufferPos + bytesWritten + j] = 0xff & version .charAt(j);\n }\n bytesWritten += 9;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & revMethod;\n bytesWritten++;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & lowpass;\n bytesWritten++;\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten,\n peakSignalAmplitude);\n bytesWritten += 4;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten,\n radioReplayGain);\n bytesWritten += 2;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten,\n audiophileReplayGain);\n bytesWritten += 2;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & flags;\n bytesWritten++;\n\n if (abrBitrate >= 255)\n streamBuffer[streamBufferPos + bytesWritten] = 0xFF;\n else\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & abrBitrate;\n bytesWritten++;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & (encDelay >> 4);\n streamBuffer[streamBufferPos + bytesWritten + 1] = 0xff & ((encDelay << 4) + (encPadding >> 8));\n streamBuffer[streamBufferPos + bytesWritten + 2] = 0xff & encPadding;\n\n bytesWritten += 3;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & misc;\n bytesWritten++;\n\n // unused in rev0\n streamBuffer[streamBufferPos + bytesWritten++] = 0;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, gfp.preset);\n bytesWritten += 2;\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten, musicLength);\n bytesWritten += 4;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, musicCRC);\n bytesWritten += 2;\n\n // Calculate tag CRC.... must be done here, since it includes previous\n // information\n\n for (var i = 0; i < bytesWritten; i++)\n crc = crcUpdateLookup(streamBuffer[streamBufferPos + i], crc);\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, crc);\n bytesWritten += 2;\n\n return bytesWritten;\n }\n\n function skipId3v2(fpStream) {\n // seek to the beginning of the stream\n fpStream.seek(0);\n // read 10 bytes in case there's an ID3 version 2 header here\n var id3v2Header = new_byte$22(10);\n fpStream.readFully(id3v2Header);\n /* does the stream begin with the ID3 version 2 file identifier? */\n var id3v2TagSize;\n if (!new String(id3v2Header, \"ISO-8859-1\").startsWith(\"ID3\")) {\n /*\n * the tag size (minus the 10-byte header) is encoded into four\n * bytes where the most significant bit is clear in each byte\n */\n id3v2TagSize = (((id3v2Header[6] & 0x7f) << 21)\n | ((id3v2Header[7] & 0x7f) << 14)\n | ((id3v2Header[8] & 0x7f) << 7) | (id3v2Header[9] & 0x7f))\n + id3v2Header.length;\n } else {\n /* no ID3 version 2 tag in this stream */\n id3v2TagSize = 0;\n }\n return id3v2TagSize;\n }\n\n this.getLameTagFrame = function (gfp, buffer) {\n var gfc = gfp.internal_flags;\n\n if (!gfp.bWriteVbrTag) {\n return 0;\n }\n if (gfc.Class_ID != Lame.LAME_ID) {\n return 0;\n }\n if (gfc.VBR_seek_table.pos <= 0) {\n return 0;\n }\n if (buffer.length < gfc.VBR_seek_table.TotalFrameSize) {\n return gfc.VBR_seek_table.TotalFrameSize;\n }\n\n Arrays$22.fill(buffer, 0, gfc.VBR_seek_table.TotalFrameSize, 0);\n\n // 4 bytes frame header\n setLameTagFrameHeader(gfp, buffer);\n\n // Create TOC entries\n var toc = new_byte$22(NUMTOCENTRIES);\n\n if (gfp.free_format) {\n for (var i = 1; i < NUMTOCENTRIES; ++i)\n toc[i] = 0xff & (255 * i / 100);\n } else {\n xingSeekTable(gfc.VBR_seek_table, toc);\n }\n\n // Start writing the tag after the zero frame\n var streamIndex = gfc.sideinfo_len;\n /**\n * Note: Xing header specifies that Xing data goes in the ancillary data\n * with NO ERROR PROTECTION. If error protecton in enabled, the Xing\n * data still starts at the same offset, and now it is in sideinfo data\n * block, and thus will not decode correctly by non-Xing tag aware\n * players\n */\n if (gfp.error_protection)\n streamIndex -= 2;\n\n // Put Vbr tag\n if (gfp.VBR == VbrMode$22.vbr_off) {\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(0);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(1);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(2);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(3);\n\n } else {\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(0);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(1);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(2);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(3);\n }\n\n // Put header flags\n createInteger(buffer, streamIndex, FRAMES_FLAG + BYTES_FLAG + TOC_FLAG\n + VBR_SCALE_FLAG);\n streamIndex += 4;\n\n // Put Total Number of frames\n createInteger(buffer, streamIndex, gfc.VBR_seek_table.nVbrNumFrames);\n streamIndex += 4;\n\n // Put total audio stream size, including Xing/LAME Header\n var streamSize = (gfc.VBR_seek_table.nBytesWritten + gfc.VBR_seek_table.TotalFrameSize);\n createInteger(buffer, streamIndex, 0 | streamSize);\n streamIndex += 4;\n\n /* Put TOC */\n System$22.arraycopy(toc, 0, buffer, streamIndex, toc.length);\n streamIndex += toc.length;\n\n if (gfp.error_protection) {\n // (jo) error_protection: add crc16 information to header\n bs.CRC_writeheader(gfc, buffer);\n }\n\n // work out CRC so far: initially crc = 0\n var crc = 0x00;\n for (var i = 0; i < streamIndex; i++)\n crc = crcUpdateLookup(buffer[i], crc);\n // Put LAME VBR info\n streamIndex += putLameVBR(gfp, streamSize, buffer, streamIndex, crc);\n\n return gfc.VBR_seek_table.TotalFrameSize;\n };\n\n /**\n * Write final VBR tag to the file.\n *\n * @param gfp\n * global flags\n * @param stream\n * stream to add the VBR tag to\n * @return 0 (OK), -1 else\n * @throws IOException\n * I/O error\n */\n this.putVbrTag = function (gfp, stream) {\n var gfc = gfp.internal_flags;\n\n if (gfc.VBR_seek_table.pos <= 0)\n return -1;\n\n // Seek to end of file\n stream.seek(stream.length());\n\n // Get file size, abort if file has zero length.\n if (stream.length() == 0)\n return -1;\n\n // The VBR tag may NOT be located at the beginning of the stream. If an\n // ID3 version 2 tag was added, then it must be skipped to write the VBR\n // tag data.\n var id3v2TagSize = skipId3v2(stream);\n\n // Seek to the beginning of the stream\n stream.seek(id3v2TagSize);\n\n var buffer = new_byte$22(MAXFRAMESIZE);\n var bytes = getLameTagFrame(gfp, buffer);\n if (bytes > buffer.length) {\n return -1;\n }\n\n if (bytes < 1) {\n return 0;\n }\n\n // Put it all to disk again\n stream.write(buffer, 0, bytes);\n // success\n return 0;\n };\n\n}\n\nvar VBRTag_1 = VBRTag;\n\nvar new_byte = common.new_byte;\nvar assert = common.assert;\n\nLame = Lame_1;\nPresets = Presets_1;\nGainAnalysis = GainAnalysis_1;\nQuantizePVT = QuantizePVT_1;\nQuantize = Quantize_1;\nTakehiro = Takehiro_1;\nReservoir = Reservoir_1;\nMPEGMode = MPEGMode_1;\nBitStream = BitStream_1;\n\n\n\n\nfunction GetAudio() {\n var parse;\n var mpg;\n\n this.setModules = function (parse2, mpg2) {\n parse = parse2;\n mpg = mpg2;\n };\n}\n\n\nfunction Parse() {\n var ver;\n var id3;\n var pre;\n\n this.setModules = function (ver2, id32, pre2) {\n ver = ver2;\n id3 = id32;\n pre = pre2;\n };\n}\n\nfunction MPGLib() {\n}\n\nfunction ID3Tag() {\n var bits;\n var ver;\n\n this.setModules = function (_bits, _ver) {\n bits = _bits;\n ver = _ver;\n };\n}\n\nfunction Mp3Encoder(channels, samplerate, kbps) {\n if (arguments.length != 3) {\n console.error('WARN: Mp3Encoder(channels, samplerate, kbps) not specified');\n channels = 1;\n samplerate = 44100;\n kbps = 128;\n }\n var lame = new Lame();\n var gaud = new GetAudio();\n var ga = new GainAnalysis();\n var bs = new BitStream();\n var p = new Presets();\n var qupvt = new QuantizePVT();\n var qu = new Quantize();\n var vbr = new VBRTag_1();\n var ver = new Version_1();\n var id3 = new ID3Tag();\n var rv = new Reservoir();\n var tak = new Takehiro();\n var parse = new Parse();\n var mpg = new MPGLib();\n\n lame.setModules(ga, bs, p, qupvt, qu, vbr, ver, id3, mpg);\n bs.setModules(ga, mpg, ver, vbr);\n id3.setModules(bs, ver);\n p.setModules(lame);\n qu.setModules(bs, rv, qupvt, tak);\n qupvt.setModules(tak, rv, lame.enc.psy);\n rv.setModules(bs);\n tak.setModules(qupvt);\n vbr.setModules(lame, bs, ver);\n gaud.setModules(parse, mpg);\n parse.setModules(ver, id3, p);\n\n var gfp = lame.lame_init();\n\n gfp.num_channels = channels;\n gfp.in_samplerate = samplerate;\n gfp.brate = kbps;\n gfp.mode = MPEGMode.STEREO;\n gfp.quality = 3;\n gfp.bWriteVbrTag = false;\n gfp.disable_reservoir = true;\n gfp.write_id3tag_automatic = false;\n\n var retcode = lame.lame_init_params(gfp);\n assert(0 == retcode);\n var maxSamples = 1152;\n var mp3buf_size = 0 | (1.25 * maxSamples + 7200);\n var mp3buf = new_byte(mp3buf_size);\n\n this.encodeBuffer = function (left, right) {\n if (channels == 1) {\n right = left;\n }\n assert(left.length == right.length);\n if (left.length > maxSamples) {\n maxSamples = left.length;\n mp3buf_size = 0 | (1.25 * maxSamples + 7200);\n mp3buf = new_byte(mp3buf_size);\n }\n\n var _sz = lame.lame_encode_buffer(gfp, left, right, left.length, mp3buf, 0, mp3buf_size);\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n\n this.flush = function () {\n var _sz = lame.lame_encode_flush(gfp, mp3buf, 0, mp3buf_size);\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n}\n\nfunction WavHeader() {\n this.dataOffset = 0;\n this.dataLen = 0;\n this.channels = 0;\n this.sampleRate = 0;\n}\n\nfunction fourccToInt(fourcc) {\n return fourcc.charCodeAt(0) << 24 | fourcc.charCodeAt(1) << 16 | fourcc.charCodeAt(2) << 8 | fourcc.charCodeAt(3);\n}\n\nWavHeader.RIFF = fourccToInt(\"RIFF\");\nWavHeader.WAVE = fourccToInt(\"WAVE\");\nWavHeader.fmt_ = fourccToInt(\"fmt \");\nWavHeader.data = fourccToInt(\"data\");\n\nWavHeader.readHeader = function (dataView) {\n var w = new WavHeader();\n\n var header = dataView.getUint32(0, false);\n if (WavHeader.RIFF != header) {\n return;\n }\n var fileLen = dataView.getUint32(4, true);\n if (WavHeader.WAVE != dataView.getUint32(8, false)) {\n return;\n }\n if (WavHeader.fmt_ != dataView.getUint32(12, false)) {\n return;\n }\n var fmtLen = dataView.getUint32(16, true);\n var pos = 16 + 4;\n switch (fmtLen) {\n case 16:\n case 18:\n w.channels = dataView.getUint16(pos + 2, true);\n w.sampleRate = dataView.getUint32(pos + 4, true);\n break;\n default:\n throw 'extended fmt chunk not implemented';\n }\n pos += fmtLen;\n var data = WavHeader.data;\n var len = 0;\n while (data != header) {\n header = dataView.getUint32(pos, false);\n len = dataView.getUint32(pos + 4, true);\n if (data == header) {\n break;\n }\n pos += (len + 8);\n }\n w.dataLen = len;\n w.dataOffset = pos + 8;\n return w;\n};\n\nvar Mp3Encoder_1 = Mp3Encoder;\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar Encoder = function () {\n function Encoder(config) {\n classCallCheck(this, Encoder);\n\n this.config = {\n sampleRate: 44100,\n bitRate: 128\n };\n\n Object.assign(this.config, config);\n\n this.mp3Encoder = new Mp3Encoder_1(1, this.config.sampleRate, this.config.bitRate);\n\n // Audio is processed by frames of 1152 samples per audio channel\n // http://lame.sourceforge.net/tech-FAQ.txt\n this.maxSamples = 1152;\n\n this.samplesMono = null;\n this.clearBuffer();\n }\n\n /**\n * Clear active buffer\n */\n\n\n createClass(Encoder, [{\n key: 'clearBuffer',\n value: function clearBuffer() {\n this.dataBuffer = [];\n }\n\n /**\n * Append new audio buffer to current active buffer\n * @param {Buffer} buffer\n */\n\n }, {\n key: 'appendToBuffer',\n value: function appendToBuffer(buffer) {\n this.dataBuffer.push(new Int8Array(buffer));\n }\n\n /**\n * Float current data to 16 bits PCM\n * @param {Float32Array} input\n * @param {Int16Array} output\n */\n\n }, {\n key: 'floatTo16BitPCM',\n value: function floatTo16BitPCM(input, output) {\n for (var i = 0; i < input.length; i++) {\n var s = Math.max(-1, Math.min(1, input[i]));\n output[i] = s < 0 ? s * 0x8000 : s * 0x7FFF;\n }\n }\n\n /**\n * Convert buffer to proper format\n * @param {Array} arrayBuffer\n */\n\n }, {\n key: 'convertBuffer',\n value: function convertBuffer(arrayBuffer) {\n var data = new Float32Array(arrayBuffer);\n var out = new Int16Array(arrayBuffer.length);\n this.floatTo16BitPCM(data, out);\n\n return out;\n }\n\n /**\n * Encode and append current buffer to dataBuffer\n * @param {Array} arrayBuffer\n */\n\n }, {\n key: 'encode',\n value: function encode(arrayBuffer) {\n this.samplesMono = this.convertBuffer(arrayBuffer);\n var remaining = this.samplesMono.length;\n\n for (var i = 0; remaining >= 0; i += this.maxSamples) {\n var left = this.samplesMono.subarray(i, i + this.maxSamples);\n var mp3buffer = this.mp3Encoder.encodeBuffer(left);\n this.appendToBuffer(mp3buffer);\n remaining -= this.maxSamples;\n }\n }\n\n /**\n * Return full dataBuffer\n */\n\n }, {\n key: 'finish',\n value: function finish() {\n this.appendToBuffer(this.mp3Encoder.flush());\n\n return this.dataBuffer;\n }\n }]);\n return Encoder;\n}();\n\nvar MicRecorder = function () {\n function MicRecorder(config) {\n classCallCheck(this, MicRecorder);\n\n this.config = {\n // 128 or 160 kbit/s – mid-range bitrate quality\n bitRate: 128,\n\n // There is a known issue with some macOS machines, where the recording\n // will sometimes have a loud 'pop' or 'pop-click' sound. This flag\n // prevents getting audio from the microphone a few milliseconds after\n // the begining of the recording. It also helps to remove the mouse\n // \"click\" sound from the output mp3 file.\n startRecordingAt: 300,\n deviceId: null\n };\n\n this.activeStream = null;\n this.context = null;\n this.microphone = null;\n this.processor = null;\n this.startTime = 0;\n\n Object.assign(this.config, config);\n }\n\n /**\n * Starts to listen for the microphone sound\n * @param {MediaStream} stream\n */\n\n\n createClass(MicRecorder, [{\n key: 'addMicrophoneListener',\n value: function addMicrophoneListener(stream) {\n var _this = this;\n\n this.activeStream = stream;\n\n // This prevents the weird noise once you start listening to the microphone\n this.timerToStart = setTimeout(function () {\n delete _this.timerToStart;\n }, this.config.startRecordingAt);\n\n // Set up Web Audio API to process data from the media stream (microphone).\n this.microphone = this.context.createMediaStreamSource(stream);\n\n // Settings a bufferSize of 0 instructs the browser to choose the best bufferSize\n this.processor = this.context.createScriptProcessor(0, 1, 1);\n\n // Add all buffers from LAME into an array.\n this.processor.onaudioprocess = function (event) {\n if (_this.timerToStart) {\n return;\n }\n\n // Send microphone data to LAME for MP3 encoding while recording.\n _this.lameEncoder.encode(event.inputBuffer.getChannelData(0));\n };\n\n // Begin retrieving microphone data.\n this.microphone.connect(this.processor);\n this.processor.connect(this.context.destination);\n }\n }, {\n key: 'stop',\n\n\n /**\n * Disconnect microphone, processor and remove activeStream\n */\n value: function stop() {\n if (this.processor && this.microphone) {\n // Clean up the Web Audio API resources.\n this.microphone.disconnect();\n this.processor.disconnect();\n\n // If all references using this.context are destroyed, context is closed\n // automatically. DOMException is fired when trying to close again\n if (this.context && this.context.state !== 'closed') {\n this.context.close();\n }\n\n this.processor.onaudioprocess = null;\n\n // Stop all audio tracks. Also, removes recording icon from chrome tab\n this.activeStream.getAudioTracks().forEach(function (track) {\n return track.stop();\n });\n }\n\n return this;\n }\n }, {\n key: 'start',\n\n\n /**\n * Requests access to the microphone and start recording\n * @return Promise\n */\n value: function start() {\n var _this2 = this;\n\n var AudioContext = window.AudioContext || window.webkitAudioContext;\n this.context = new AudioContext();\n this.config.sampleRate = this.context.sampleRate;\n this.lameEncoder = new Encoder(this.config);\n\n var audio = this.config.deviceId ? { deviceId: { exact: this.config.deviceId } } : true;\n\n return new Promise(function (resolve, reject) {\n navigator.mediaDevices.getUserMedia({ audio: audio }).then(function (stream) {\n _this2.addMicrophoneListener(stream);\n resolve(stream);\n }).catch(function (err) {\n reject(err);\n });\n });\n }\n }, {\n key: 'getMp3',\n\n\n /**\n * Return Mp3 Buffer and Blob with type mp3\n * @return {Promise}\n */\n value: function getMp3() {\n var _this3 = this;\n\n var finalBuffer = this.lameEncoder.finish();\n\n return new Promise(function (resolve, reject) {\n if (finalBuffer.length === 0) {\n reject(new Error('No buffer to send'));\n } else {\n resolve([finalBuffer, new Blob(finalBuffer, { type: 'audio/mp3' })]);\n _this3.lameEncoder.clearBuffer();\n }\n });\n }\n }]);\n return MicRecorder;\n}();\n\nreturn MicRecorder;\n\n})));\n//# sourceMappingURL=index.js.map\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.19';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var 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 match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\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 */\n function 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\n /**\n * A specialized version of `_.forEachRight` 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 */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee 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 all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(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 false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\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 */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\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 */\n function 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\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` 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 * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` 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 * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\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 */\n function 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\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\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 */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\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 * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` 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 {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` 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 {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\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 */\n function 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\n /**\n * A specialized version of `_.lastIndexOf` 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 */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\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 */\n var 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\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(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 /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\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 */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function 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 /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\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 */\n function 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\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 */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\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 */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\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 */\n function 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\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(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 /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\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 */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\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 */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\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 */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\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 */\n function 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\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 */\n function 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\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\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 */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\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 */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\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 */\n function 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\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\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 */\n function 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\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\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 */\n function 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\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` 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 */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\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 */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\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 */\n function 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\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 */\n function 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\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\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 */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\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 */\n function 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\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\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 */\n function 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\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\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 */\n function 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\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection 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 */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\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 */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\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 */\n function 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\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\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 */\n function 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\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 */\n function 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\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 */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\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 */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\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 */\n function 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\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\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 */\n function 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\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects 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 */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\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 */\n function 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\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\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 */\n function 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\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 */\n function 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\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 */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\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 */\n function 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\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\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 */\n function 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\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\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 */\n function 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\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 */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\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 */\n var 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\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\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 */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\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 */\n function 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\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\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 */\n function 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\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\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 */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\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 */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\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 */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` 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 `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\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 array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\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 */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` 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 a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\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 */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\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 */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or 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 a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\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 */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\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 */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` 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 of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\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 omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * 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 * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\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 */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\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 */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\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 * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\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 assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '