@linn-it/linn-form-components-library 34.5.1 → 34.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/components/Loading.js","../src/components/Breadcrumbs.js","../src/components/SaveBackCancelButtons.js","../src/components/Dropdown.js","../src/components/ErrorCard.js","../src/components/CheckboxWithLabel.js","../src/components/InputField.js","../src/components/Page.js","../src/components/EntityList.js","../src/components/SnackbarMessage.js","../node_modules/moment/moment.js","../src/components/SearchInputField.js","../src/components/SearchIcon.js","../src/utilities/index.js","../src/components/Panel.js","../src/components/SearchPanel.js","../src/themes/linnTheme.js","../src/utilities/dateUtilities.js","../src/components/LinnWeekPicker.js","../node_modules/style-inject/dist/style-inject.es.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/file-selector/dist/es2015/file.js","../node_modules/file-selector/dist/es2015/file-selector.js","../node_modules/attr-accept/dist/es/index.js","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","../src/components/Search.js","../src/components/ReportDataGrid.js","../src/components/LinkField.js","../src/hooks/useGet.js","../src/hooks/useEditableSearchGrid.js","../src/components/AddressUtility.js","../src/components/AutoComplete.js","../src/components/BackButton.js","../src/components/ConfirmDialog.js","../src/components/CreateButton.js","../src/components/DatePicker.js","../src/components/DateTimePicker.js","../src/components/ExportButton.js","../src/components/FileUploader.js","../src/components/LinkButton.js","../src/components/Navigation.js","../src/components/NotFound.js","../src/components/OnOffSwitch.js","../src/components/PermissionIndicator.js","../src/components/PrevNextButtons.js","../src/components/ReportDataGrids.js","../src/components/SelectedItemsList.js","../src/components/common/initialiseOnMount.js","../src/hooks/useDebounceValue.js","../src/hooks/useDelete.js","../src/hooks/useInitialise.js","../src/hooks/usePost.js","../src/hooks/usePreviousNextNavigation.js","../src/hooks/usePut.js","../src/hooks/useSearch.js","../src/hooks/useSignIn.js","../src/hooks/useUserProfile.js"],"sourcesContent":["import React from 'react';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport default function Loading() {\n return (\n <Box\n sx={{\n textAlign: 'center',\n margin: theme => theme.spacing(4),\n height: '40px'\n }}\n >\n <CircularProgress />\n </Box>\n );\n}\n","import React from 'react';\nimport Typography from '@mui/material/Typography';\nimport Link from '@mui/material/Link';\n\nfunction Breadcrumbs({\n navigate,\n rootPathLength = 2,\n homeUrl = 'https://app.linn.co.uk',\n location\n}) {\n let path = location.pathname;\n if (path.endsWith('/')) {\n path = path.substring(0, path.length - 1);\n }\n\n const crumbs = path\n .split('/')\n .filter(x => x !== 'report')\n .reduce((sofar, crumb, i, list) => {\n const currentPath = list.slice(0, i + 1).join('/') || '/';\n const handleClick = e => {\n if (list.length > rootPathLength) {\n e.preventDefault();\n navigate(currentPath);\n }\n };\n\n return crumb\n ? [\n ...sofar,\n {\n key: i,\n caption: crumb,\n href: currentPath,\n onClick: handleClick\n }\n ]\n : sofar;\n }, []);\n\n return (\n <span style={{ marginLeft: '20px' }}>\n <Link\n key=\"home\"\n href={homeUrl}\n variant=\"button\"\n sx={{\n '&:hover': {\n cursor: 'pointer'\n }\n }}\n >\n HOME\n </Link>\n <> {' / '} </>\n {crumbs.map((crumb, index) => {\n if (index < crumbs.length - 1) {\n return (\n <span key={index}>\n <Link\n key={crumb.href}\n href={crumb.href}\n variant=\"button\"\n sx={{\n '&:hover': {\n cursor: 'pointer'\n }\n }}\n onClick={crumb.onClick}\n >\n {crumb.caption}\n </Link>\n <> {' / '} </>\n </span>\n );\n }\n return (\n <Typography display=\"inline\" variant=\"button\" key={index}>\n {crumb.caption}\n </Typography>\n );\n })}\n </span>\n );\n}\n\nexport default Breadcrumbs;\n","import React from 'react';\n\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\n\nfunction SaveBackCancelButtons({\n saveClick,\n cancelClick,\n saveDisabled = false,\n backClick,\n showBackButton = true,\n editStatus = null,\n saveButtonLabelText = 'Save'\n}) {\n const editing = editStatus === 'edit' || editStatus === 'create';\n\n const handleClick = () => {\n if (saveDisabled && !editing) {\n backClick();\n } else {\n cancelClick();\n }\n };\n\n return (\n <Box sx={{ float: 'right' }}>\n {(!saveDisabled || showBackButton || editing) && (\n <Button\n id=\"cancel-button\"\n onClick={() => handleClick()}\n variant=\"outlined\"\n sx={{ marginRight: theme => theme.spacing(1) }}\n >\n {saveDisabled && !editing ? 'Back' : 'Cancel'}\n </Button>\n )}\n <Button\n id=\"save-button\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => saveClick()}\n disabled={saveDisabled}\n >\n {saveButtonLabelText}\n </Button>\n </Box>\n );\n}\n\nexport default SaveBackCancelButtons;\n","import React from 'react';\nimport TextField from '@mui/material/TextField';\nimport InputLabel from '@mui/material/InputLabel';\n\nconst hasValue = val => val || val === 0;\n\nconst getValue = val => (hasValue(val) ? val : '');\n\nconst hasDisplayText = items => items.some(item => item.displayText || item.displayText === '');\n\nconst getOptions = (items, allowNoValue, optionsLoading = false) => {\n if (optionsLoading) return ['loading...'];\n const options = items ? [...items] : [];\n if (allowNoValue) {\n if (hasDisplayText(items)) {\n options.push({ id: '', displayText: '' });\n } else {\n options.push('');\n }\n }\n return options;\n};\n\nconst getSelectableItems = (items, currentValue) => {\n if (!items) return items;\n const filtered = items.filter(item => item.hideFromEdit !== 'Y');\n // If the current value is a hidden item, include it so it still displays correctly\n const currentItem = items.find(\n item => (item.id !== undefined ? item.id : item) === currentValue\n );\n if (currentItem && currentItem.hideFromEdit === 'Y') {\n return [currentItem, ...filtered];\n }\n return filtered;\n};\n\nfunction Dropdown({\n onChange,\n optionsLoading = false,\n propertyName,\n required = false,\n disabled = false,\n label = '',\n items = [],\n allowNoValue = true,\n value = '',\n helperText = '',\n fullWidth = false,\n adornment = '',\n type = 'text',\n error = false,\n margin = 'dense',\n autoFocus = false\n}) {\n const change = e => {\n const newValue = e.target.value;\n\n let val;\n\n if (type === 'number') {\n val = hasValue(newValue) ? parseFloat(newValue) : null;\n } else {\n val = hasValue(newValue) ? newValue : '';\n }\n\n onChange(propertyName, val);\n };\n\n const selectableItems = getSelectableItems(items, value);\n\n return (\n <>\n <InputLabel\n sx={{\n fontSize: theme => theme.typography.fontSize,\n color: error ? theme => theme.palette.error.main : 'inherit',\n '& .MuiInputLabel-asterisk': {\n color: theme => theme.palette.error.main\n }\n }}\n required={required}\n error={error}\n htmlFor={propertyName}\n >\n {label}\n </InputLabel>\n <TextField\n sx={{\n paddingTop: 0,\n marginTop: theme => theme.spacing(1)\n }}\n autoFocus={autoFocus}\n error={error}\n id={propertyName}\n type={type}\n select\n adornment={adornment}\n disabled={disabled}\n fullWidth={fullWidth}\n value={getValue(value)}\n onChange={e => change(e)}\n slotProps={{\n select: {\n native: true\n },\n formHelperText: {\n sx: {\n color: error ? theme => theme.palette.error.main : 'inherit',\n '&.Mui-required': {\n color: theme => theme.palette.error.main\n }\n }\n }\n }}\n size=\"small\"\n helperText={helperText}\n margin={margin}\n variant=\"outlined\"\n required={required}\n >\n {hasDisplayText(selectableItems)\n ? getOptions(selectableItems, allowNoValue, optionsLoading).map(item => (\n <option key={item.id} value={item.id}>\n {item.displayText}\n </option>\n ))\n : getOptions(selectableItems, allowNoValue, optionsLoading).map(item => (\n <option key={item} value={item}>\n {item}\n </option>\n ))}\n </TextField>\n </>\n );\n}\n\nexport default Dropdown;\n","import React from 'react';\nimport Typography from '@mui/material/Typography';\nimport Card from '@mui/material/Card';\nimport Error from '@mui/icons-material/Error';\n\nfunction ErrorCard({ errorMessage, detailLines = [] }) {\n return (\n <Card\n sx={{\n width: '50%',\n margin: '0 auto',\n padding: theme => theme.spacing(2),\n backgroundColor: theme => theme.palette.error.light\n }}\n >\n <Error sx={{ color: theme => theme.palette.error.dark, float: 'right' }} />\n\n <Typography align=\"center\">{errorMessage}</Typography>\n <div>\n {detailLines?.map(d => (\n <Typography\n key={d.descriptor}\n align=\"center\"\n >{`${d.descriptor} - ${d.message}`}</Typography>\n ))}\n </div>\n </Card>\n );\n}\n\nexport default ErrorCard;\n","import React from 'react';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\n\nconst CheckboxWithLabel = ({\n checked = false,\n color = 'primary',\n label = '',\n onChange,\n sx = {}\n}) => (\n <FormControlLabel\n label={label}\n sx={{\n width: '100%',\n fontSize: 14,\n ...sx\n }}\n control={<Checkbox checked={checked} onChange={onChange} color={color} />}\n />\n);\n\nexport default CheckboxWithLabel;\n","import React, { useRef, useEffect, useState } from 'react';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport TextField from '@mui/material/TextField';\nimport InputLabel from '@mui/material/InputLabel';\n\nconst hasValue = val => val || val === 0;\nconst getValue = val => (hasValue(val) ? val : '');\n\nfunction InputField({\n onChange = null,\n propertyName,\n type = 'text',\n adornment = '',\n disabled = false,\n error = false,\n fullWidth = false,\n helperText = '',\n label = '',\n margin = 'dense',\n maxLength = null,\n rows = null,\n name = '',\n placeholder = '',\n required = false,\n value = '',\n decimalPlaces = null,\n textFieldProps = null,\n autoFocus = false,\n onErrorStateChange = null,\n visible = true,\n autoComplete = 'off'\n}) {\n const inputRef = useRef(null);\n const [inErrorState, setInErrorState] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n\n useEffect(() => {\n setTimeout(() => {\n if (!autoFocus || !inputRef.current || !visible) return;\n inputRef.current.focus();\n }, 100);\n }, [autoFocus, visible]);\n\n useEffect(() => {\n setInErrorState(error);\n }, [error]);\n\n const change = e => {\n const newValue = e.target.value;\n\n let val = newValue;\n\n if (type === 'number') {\n val = hasValue(newValue) ? parseFloat(newValue) : null;\n\n if (\n val &&\n decimalPlaces &&\n newValue.indexOf('.') < newValue.length - decimalPlaces &&\n newValue.indexOf('.') !== -1\n ) {\n val = parseFloat(newValue.slice(0, newValue.indexOf('.') + decimalPlaces + 1));\n }\n } else if (maxLength && newValue?.length > maxLength) {\n setInErrorState(true);\n setErrorMessage(`MAX LENGTH (${maxLength}) EXCEEDED`);\n if (onErrorStateChange) {\n onErrorStateChange(true);\n }\n } else if (maxLength && newValue?.length <= maxLength) {\n setInErrorState(false);\n if (onErrorStateChange) {\n onErrorStateChange(false);\n }\n setErrorMessage('');\n }\n\n onChange(propertyName, val);\n };\n\n return (\n <>\n <InputLabel\n sx={{\n fontSize: theme => theme.typography.fontSize,\n color: inErrorState ? theme => theme.palette.error.main : 'inherit',\n '& .MuiInputLabel-asterisk': {\n color: theme => theme.palette.error.main\n }\n }}\n required={required}\n error={inErrorState}\n htmlFor={propertyName}\n >\n {label}\n </InputLabel>\n <TextField\n sx={{\n paddingTop: 0,\n marginTop: theme => theme.spacing(1)\n }}\n disabled={disabled}\n error={inErrorState}\n fullWidth={fullWidth}\n helperText={inErrorState ? errorMessage : helperText}\n margin={margin}\n multiline={rows > 0}\n name={name}\n id={propertyName}\n placeholder={placeholder}\n required={required}\n size=\"small\"\n rows={rows}\n inputRef={inputRef}\n onWheel={() => {\n if (type === 'number') {\n inputRef.current.blur();\n }\n }}\n type={type}\n autoComplete={autoComplete}\n value={getValue(value)}\n onChange={e => change(e)}\n slotProps={{\n input: {\n startAdornment: adornment ? (\n <InputAdornment position=\"start\">{adornment}</InputAdornment>\n ) : null\n },\n formHelperText: {\n sx: {\n color: inErrorState\n ? theme => theme.palette.error.main\n : theme => theme.palette.text.primary\n }\n }\n }}\n onInput={e => {\n if (type === 'number' && maxLength) {\n e.target.value = e.target.value.slice(0, maxLength);\n }\n }}\n variant=\"outlined\"\n {...textFieldProps}\n />\n </>\n );\n}\n\nexport default InputField;\n","import React, { useEffect } from 'react';\nimport { useSnackbar } from 'notistack';\nimport { Paper } from '@mui/material';\nimport Grid from '@mui/material/Grid';\nimport Breadcrumbs from './Breadcrumbs.js';\n\nconst pageWidth = {\n xs: 4,\n s: 6,\n m: 8,\n l: 10,\n xl: 12\n};\n\nconst columnWidth = {\n xs: 4,\n s: 3,\n m: 2,\n l: 1,\n xl: 0\n};\n\nfunction Page({\n children,\n navigate = null,\n location = null,\n width = 'l',\n requestErrors = [],\n showRequestErrors = false,\n homeUrl = null,\n showBreadcrumbs = true,\n title = null,\n defaultAppTitle = null\n}) {\n const { enqueueSnackbar } = useSnackbar();\n\n useEffect(() => {\n if (requestErrors && showRequestErrors) {\n requestErrors.forEach(t => {\n enqueueSnackbar(`${t.message} - ${t.type}`, {\n variant: 'error',\n preventDuplicate: true\n });\n });\n }\n }, [requestErrors, enqueueSnackbar, showRequestErrors]);\n\n useEffect(() => {\n if (title) {\n document.title = title;\n }\n return () => {\n if (defaultAppTitle) {\n document.title = defaultAppTitle;\n }\n };\n }, [title, defaultAppTitle]);\n\n return (\n <Grid container spacing={3}>\n <Grid size={12}>\n {showBreadcrumbs && (\n <Breadcrumbs navigate={navigate} homeUrl={homeUrl} location={location} />\n )}\n </Grid>\n <Grid size={columnWidth[width]} />\n <Grid size={pageWidth[width]}>\n <Paper sx={{ padding: 4 }} square>\n {children}\n </Paper>\n </Grid>\n\n <Grid size={columnWidth[width]} />\n </Grid>\n );\n}\n\nexport default Page;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\n\nconst getListItemText = (entity, entityid, descriptionFieldName) =>\n descriptionFieldName\n ? `${entity[entityid]} - ${entity[descriptionFieldName]}`\n : entity[entityid];\n\nfunction EntityList({\n title = '',\n entityList,\n entityId,\n descriptionFieldName = null,\n hasExternalLinks = false\n}) {\n const Component = hasExternalLinks ? 'a' : Link;\n return (\n <>\n <Typography variant=\"h4\">{title}</Typography>\n <List>\n {entityList.map(entity => (\n <ListItem\n key={entity[entityId]}\n button\n component={Component}\n to={entity.href}\n href={entity.href}\n >\n <Typography color=\"primary\" variant=\"subtitle2\">\n {getListItemText(entity, entityId, descriptionFieldName)}\n </Typography>\n </ListItem>\n ))}\n </List>\n </>\n );\n}\n\nexport default EntityList;\n","import React from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport Snackbar from '@mui/material/Snackbar';\nimport CloseIcon from '@mui/icons-material/Close';\n\nfunction SnackbarMessage({ message, visible = false, onClose, timeOut = 3000 }) {\n return (\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n slotProps={{\n content: {\n sx: {\n backgroundColor: theme => theme.palette.primary.main\n }\n }\n }}\n open={visible}\n autoHideDuration={timeOut}\n onClose={() => onClose(false)}\n message={message}\n action={\n <IconButton\n aria-label=\"Close\"\n color=\"inherit\"\n onClick={() => onClose(false)}\n size=\"large\"\n >\n <CloseIcon />\n </IconButton>\n }\n />\n );\n}\n\nexport default SnackbarMessage;\n","//! moment.js\n//! version : 2.31.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 arrLen = arr.length;\n for (i = 0; i < arrLen; ++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 invalidOffset: 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$2(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidOffset &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\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 return m._isValid;\n }\n\n function createInvalid$1(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,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\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 (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; 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 argLen = arguments.length;\n for (i = 0; i < argLen; 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' + new Error().stack);\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 var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\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 date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\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 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 =\n /(\\[[^\\[]*\\])|(\\\\e)|(\\\\)?(eHHmm|[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 var cacheKey = '$' + format;\n if (!hasOwnProp(formatFunctions, cacheKey)) {\n formatFunctions[cacheKey] = makeFormatFunction(format);\n }\n\n return formatFunctions[cacheKey](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 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 =\n /[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 match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\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(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\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 var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\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 tokenLen = token.length;\n for (i = 0; i < tokenLen; 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 function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\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 // 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 // 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 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$2(this, unit);\n }\n };\n }\n\n function get$2(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\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 prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; 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 function mod$1(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$1(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 // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\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 =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord,\n monthsParseProperties = [\n 'monthsParse',\n 'longMonthsParse',\n 'shortMonthsParse',\n 'monthsRegex',\n 'monthsShortRegex',\n 'monthsStrictRegex',\n 'monthsShortStrictRegex',\n ];\n\n function clearMonthsParseCache(locale, config) {\n var i, prop;\n for (i = 0; i < monthsParseProperties.length; i++) {\n prop = monthsParseProperties[i];\n if (!hasOwnProp(config, prop)) {\n delete locale['_' + prop];\n }\n }\n }\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$1(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$1.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 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 var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\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$2(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 shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\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\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('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 addFormatToken('eHHmm', 0, 0, function () {\n return (\n '' +\n this.weekday() +\n zeroFill(this.hours(), 2) +\n zeroFill(this.minutes(), 2)\n );\n });\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('eHHmm', match5to6);\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 addWeekParseToken('eHHmm', function (input, week, config) {\n var weekdayEnd = input.length - 4;\n\n week.e = toInt(input.substr(0, weekdayEnd));\n config._a[HOUR] = toInt(input.substr(weekdayEnd, 2));\n config._a[MINUTE] = toInt(input.substr(weekdayEnd + 2));\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 =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\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 weekdaysParseProperties = [\n 'weekdaysParse',\n 'fullWeekdaysParse',\n 'shortWeekdaysParse',\n 'minWeekdaysParse',\n 'weekdaysRegex',\n 'weekdaysShortRegex',\n 'weekdaysMinRegex',\n 'weekdaysStrictRegex',\n 'weekdaysShortStrictRegex',\n 'weekdaysMinStrictRegex',\n ];\n\n function clearWeekdaysParseCache(locale, config) {\n var i, prop;\n for (i = 0; i < weekdaysParseProperties.length; i++) {\n prop = weekdaysParseProperties[i];\n if (!hasOwnProp(config, prop)) {\n delete locale['_' + prop];\n }\n }\n }\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(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.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\n var day = get$2(this, 'Day');\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 function set(config) {\n var prop, i;\n clearMonthsParseCache(this, config);\n clearWeekdaysParseCache(this, config);\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$1(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\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 formatCache = this._longDateFormatCache;\n\n if (format || !formatUpper) {\n return format;\n }\n\n if (\n formatCache &&\n formatCache[key] &&\n formatCache[key].formatUpper === formatUpper\n ) {\n return formatCache[key].format;\n }\n\n format = 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 if (!formatCache) {\n formatCache = this._longDateFormatCache = {};\n }\n formatCache[key] = {\n formatUpper: formatUpper,\n format: format,\n };\n return format;\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 relativeTimeWithoutPostformat(\n number,\n withoutSuffix,\n string,\n isFuture\n ) {\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 relativeTime$1(number, withoutSuffix, string, isFuture) {\n return this.postformat(\n relativeTimeWithoutPostformat.call(\n this,\n number,\n withoutSuffix,\n string,\n isFuture\n )\n );\n }\n\n function pastFutureWithoutPostformat(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 function pastFuture(diff, output) {\n return this.postformat(\n pastFutureWithoutPostformat.call(this, diff, output)\n );\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 weekOfYearFromDayOfYear(year, dayOfYear, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n week = Math.floor((dayOfYear - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = year - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(year, dow, doy)) {\n resWeek = week - weeksInYear(year, dow, doy);\n resYear = year + 1;\n } else {\n resYear = year;\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n return weekOfYearFromDayOfYear(mom.year(), mom.dayOfYear(), dow, doy);\n }\n\n function weekOfYearFromDate(year, month, date, dow, doy) {\n var dayOfYear =\n Math.round(\n (createUTCDate(year, month, date) - createUTCDate(year, 0, 1)) /\n 864e5\n ) + 1;\n\n return weekOfYearFromDayOfYear(year, dayOfYear, dow, doy);\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 // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\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 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 // 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, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\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 isLocaleNameSane(name) {\n // Only canonical locale module names are safe to append to the require path.\n return typeof name === 'string' && /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name);\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire,\n normalizedName;\n\n // Preserve exact custom locale names before trying the canonical built-in name.\n // Use hasOwnProp rather than a plain lookup so that names like \"__proto__\",\n // \"constructor\", or \"prototype\" can't resolve to an inherited Object.prototype\n // property instead of a real (or missing) locale entry.\n if (hasOwnProp(locales, name)) {\n return locales[name];\n }\n\n normalizedName = normalizeLocale(name);\n if (hasOwnProp(locales, normalizedName)) {\n return locales[normalizedName];\n }\n\n // TODO: Find a better way to register and load all the locales in Node\n if (\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(normalizedName)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + normalizedName);\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[normalizedName] = null; // null means not found\n }\n }\n if (hasOwnProp(locales, normalizedName)) {\n return locales[normalizedName];\n }\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 var locale,\n tmpLocale = loadLocale(name),\n parentConfig = baseConfig;\n\n if (tmpLocale != null) {\n name = tmpLocale._abbr;\n }\n\n if (config != null) {\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 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 =\n /^\\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 =\n /^\\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 =\n /^(?:(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 isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; 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 = isoTimesLen; 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. Please refer to 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, now, forWeek) {\n var hadWeekContext = Object.prototype.hasOwnProperty.call(\n config,\n '_isDefaultDatePartsForWeek'\n ),\n weekContext = config._isDefaultDatePartsForWeek;\n\n // hooks is actually the exported moment object\n config._isDefaultDatePartsForWeek = !!forWeek;\n try {\n return hooks._getDefaultDateParts(config, now, forWeek);\n } finally {\n if (hadWeekContext) {\n config._isDefaultDatePartsForWeek = weekContext;\n } else {\n delete config._isDefaultDatePartsForWeek;\n }\n }\n }\n\n function currentDateNow(config) {\n var now = config._defaultDatePartsNow;\n\n if (!now) {\n return hooks.now();\n }\n if (!now.hasValue) {\n now.value = hooks.now();\n now.hasValue = true;\n }\n return now.value;\n }\n\n // Internal hook for extensions that supply omitted calendar fields.\n function getDefaultDateParts(config, now, forWeek) {\n var useWeekDefaults = forWeek || config._isDefaultDatePartsForWeek,\n nowValue = useWeekDefaults ? createLocal(now) : new Date(now);\n if (useWeekDefaults) {\n return [nowValue.year(), nowValue.month(), nowValue.date()];\n }\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 hooks._getDefaultDateParts = getDefaultDateParts;\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 now,\n currentDate,\n expectedWeekday,\n yearToUse,\n dateIsDefaulted;\n\n if (config._d) {\n return;\n }\n\n if (\n config._a[YEAR] == null ||\n config._a[MONTH] == null ||\n config._a[DATE] == null\n ) {\n now = currentDateNow(config);\n currentDate = currentDateArray(config, now);\n }\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, currentDateArray(config, now, true));\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse =\n config._a[YEAR] != null ? 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 dateIsDefaulted =\n config._a[YEAR] == null ||\n config._a[MONTH] == null ||\n config._a[DATE] == null;\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 !dateIsDefaulted &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config, currentDate) {\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 weekOfYearFromDate(\n currentDate[YEAR],\n currentDate[MONTH],\n currentDate[DATE],\n 1,\n 4\n ).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 = weekOfYearFromDate(\n currentDate[YEAR],\n currentDate[MONTH],\n currentDate[DATE],\n dow,\n doy\n );\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 tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; 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 defaultDatePartsNow = {},\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._defaultDatePartsNow = defaultDatePartsNow;\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid$2(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$1({ 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$2(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$1();\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$1();\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 for (i = 0; i < moments.length; ++i) {\n if (isMoment(moments[i])) {\n res = moments[i];\n break;\n }\n }\n if (!res) {\n return createInvalid$1();\n }\n for (++i; i < moments.length; ++i) {\n if (\n isMoment(moments[i]) &&\n (!moments[i].isValid() || moments[i][fn](res))\n ) {\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 orderLen = ordering.length;\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 < orderLen; ++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() {\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 (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 var offset = offsetFromString(matchShortOffset, input);\n config._useUTC = true;\n config._tzm = offset;\n if (offset === null) {\n getParsingFlags(config).invalidOffset = input;\n }\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 if (\n toInt(parts[2]) > 59 ||\n (parts[0] === '+' ? minutes > 14 * 60 : minutes > 12 * 60)\n ) {\n return null;\n }\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$1(\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 =\n /^(-|\\+)?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;\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$1(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract$1(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$2(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get$2(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$1 = createAdder(1, 'add'),\n subtract$1 = 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 propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; 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(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else 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$1() {\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$1(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(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(\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(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod(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(\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(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod(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$1() {\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() {\n return isValid$2(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 ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\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\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.clone().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.clone().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.clone().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.clone().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 erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\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 // 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(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\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() + this.localeData()._week.dow,\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 // 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 // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\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 // 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 // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\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 // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\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 // 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$2 = Moment.prototype;\n\n proto$2.add = add$1;\n proto$2.calendar = calendar;\n proto$2.clone = clone$1;\n proto$2.diff = diff;\n proto$2.endOf = endOf;\n proto$2.format = format;\n proto$2.from = from;\n proto$2.fromNow = fromNow;\n proto$2.to = to;\n proto$2.toNow = toNow;\n proto$2.get = stringGet;\n proto$2.invalidAt = invalidAt;\n proto$2.isAfter = isAfter;\n proto$2.isBefore = isBefore;\n proto$2.isBetween = isBetween;\n proto$2.isSame = isSame;\n proto$2.isSameOrAfter = isSameOrAfter;\n proto$2.isSameOrBefore = isSameOrBefore;\n proto$2.isValid = isValid;\n proto$2.lang = lang;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n proto$2.max = prototypeMax;\n proto$2.min = prototypeMin;\n proto$2.parsingFlags = parsingFlags;\n proto$2.set = stringSet;\n proto$2.startOf = startOf;\n proto$2.subtract = subtract$1;\n proto$2.toArray = toArray;\n proto$2.toObject = toObject;\n proto$2.toDate = toDate;\n proto$2.toISOString = toISOString$1;\n proto$2.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto$2[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto$2.toJSON = toJSON;\n proto$2.toString = toString;\n proto$2.unix = unix;\n proto$2.valueOf = valueOf$1;\n proto$2.creationData = creationData;\n proto$2.eraName = getEraName;\n proto$2.eraNarrow = getEraNarrow;\n proto$2.eraAbbr = getEraAbbr;\n proto$2.eraYear = getEraYear;\n proto$2.year = getSetYear;\n proto$2.isLeapYear = getIsLeapYear;\n proto$2.weekYear = getSetWeekYear;\n proto$2.isoWeekYear = getSetISOWeekYear;\n proto$2.quarter = proto$2.quarters = getSetQuarter;\n proto$2.month = getSetMonth;\n proto$2.daysInMonth = getDaysInMonth;\n proto$2.week = proto$2.weeks = getSetWeek;\n proto$2.isoWeek = proto$2.isoWeeks = getSetISOWeek;\n proto$2.weeksInYear = getWeeksInYear;\n proto$2.weeksInWeekYear = getWeeksInWeekYear;\n proto$2.isoWeeksInYear = getISOWeeksInYear;\n proto$2.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto$2.date = getSetDayOfMonth;\n proto$2.day = proto$2.days = getSetDayOfWeek;\n proto$2.weekday = getSetLocaleDayOfWeek;\n proto$2.isoWeekday = getSetISODayOfWeek;\n proto$2.dayOfYear = getSetDayOfYear;\n proto$2.hour = proto$2.hours = getSetHour;\n proto$2.minute = proto$2.minutes = getSetMinute;\n proto$2.second = proto$2.seconds = getSetSecond;\n proto$2.millisecond = proto$2.milliseconds = getSetMillisecond;\n proto$2.utcOffset = getSetOffset;\n proto$2.utc = setOffsetToUTC;\n proto$2.local = setOffsetToLocal;\n proto$2.parseZone = setOffsetToParsedOffset;\n proto$2.hasAlignedHourOffset = hasAlignedHourOffset;\n proto$2.isDST = isDaylightSavingTime;\n proto$2.isLocal = isLocal;\n proto$2.isUtcOffset = isUtcOffset;\n proto$2.isUtc = isUtc;\n proto$2.isUTC = isUtc;\n proto$2.zoneAbbr = getZoneAbbr;\n proto$2.zoneName = getZoneName;\n proto$2.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto$2.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto$2.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto$2.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto$2.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$1;\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$1;\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$1() {\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(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(input, value) {\n return addSubtract(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract(input, value) {\n return addSubtract(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 (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\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 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 valueOf = asMilliseconds;\n\n function clone() {\n return createDuration(this);\n }\n\n function get(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 relativeTimeWithoutPostformat.call(\n locale,\n number || 1,\n !!withoutSuffix,\n string,\n isFuture\n );\n }\n\n function relativeTime(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 = extend(extend({}, 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(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = pastFutureWithoutPostformat.call(locale, +this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString() {\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(this._milliseconds) / 1000,\n days = abs(this._days),\n months = abs(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 = Duration.prototype;\n\n proto.isValid = isValid$1;\n proto.abs = abs$1;\n proto.add = add;\n proto.subtract = subtract;\n proto.as = as;\n proto.asMilliseconds = asMilliseconds;\n proto.asSeconds = asSeconds;\n proto.asMinutes = asMinutes;\n proto.asHours = asHours;\n proto.asDays = asDays;\n proto.asWeeks = asWeeks;\n proto.asMonths = asMonths;\n proto.asQuarters = asQuarters;\n proto.asYears = asYears;\n proto.valueOf = valueOf;\n proto._bubble = bubble;\n proto.clone = clone;\n proto.get = get;\n proto.milliseconds = milliseconds;\n proto.seconds = seconds;\n proto.minutes = minutes;\n proto.hours = hours;\n proto.days = days;\n proto.weeks = weeks;\n proto.months = months;\n proto.years = years;\n proto.humanize = humanize;\n proto.toISOString = toISOString;\n proto.toString = toISOString;\n proto.toJSON = toISOString;\n proto.locale = locale;\n proto.localeData = localeData;\n\n proto.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString\n );\n proto.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.31.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto$2;\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$1;\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$2;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","import React from 'react';\n\nimport InputField from './InputField.js';\nimport SearchIcon from './SearchIcon.js';\n\nfunction SearchInputField({ autoFocus = false, propertyName, ...rest }) {\n return (\n <InputField\n adornment={SearchIcon()}\n autoFocus={autoFocus}\n propertyName={propertyName}\n {...rest}\n />\n );\n}\n\nexport default SearchInputField;\n","import React from 'react';\n\nimport { IconButton } from '@mui/material';\n\nconst SearchIcon = onClick => (\n <IconButton onClick={() => (onClick ? onClick() : false)} size=\"large\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" />\n </svg>\n </IconButton>\n);\n\nexport default SearchIcon;\n","const utilities = {\n getHref: (itemWithLinks, rel) => {\n if (itemWithLinks && itemWithLinks.links && itemWithLinks.links.length > 0) {\n const link = itemWithLinks.links.find(l => l.rel === rel);\n\n return link ? link.href : null;\n }\n\n return null;\n },\n\n getSelfHref: itemWithLinks => utilities.getHref(itemWithLinks, 'self'),\n\n sortList: list =>\n list.slice().sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n }),\n sortEntityList: (list, property) =>\n list.slice().sort((a, b) => {\n if (a[property] < b[property]) {\n return -1;\n }\n if (a[property] > b[property]) {\n return 1;\n }\n return 0;\n })\n};\n\nexport default utilities;\n","import React from 'react';\nimport Paper from '@mui/material/Paper';\nimport Grid from '@mui/material/Grid';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Close from '@mui/icons-material/Close';\n\nfunction Panel({ section, close }) {\n const { columns } = section;\n\n return (\n <Paper\n sx={{\n backgroundColor: '#f5f5f5',\n position: 'fixed',\n zIndex: 1000,\n paddingTop: '80px',\n width: '100%',\n overflow: 'auto',\n height: '100vh'\n }}\n >\n <Button\n onClick={close}\n color=\"secondary\"\n sx={{\n marginRight: '10px',\n marginTop: '10px',\n float: 'right',\n top: 0,\n right: 0\n }}\n >\n <Close />\n </Button>\n <Grid container>\n {columns.map((col, i) => (\n <Grid size={{ xs: 12, md: 6, lg: 3, xl: 3 }} key={i}>\n {col.categories\n .filter(e => e.items.filter(item => item.showInMenu).length > 0)\n .map(category => (\n <List key={category.title} dense>\n <ListItem\n sx={{\n paddingTop: '0px !important',\n paddingBottom: '0px !important'\n }}\n >\n <Typography variant=\"button\" gutterBottom>\n {category.title.replace('&amp;', '&')}\n </Typography>\n </ListItem>\n {category.items.map(\n entry =>\n entry.showInMenu && (\n <a\n href={entry.href}\n key={entry.href}\n style={{ textDecoration: 'none' }}\n >\n <ListItem\n sx={{\n paddingTop: 0,\n paddingBottom: 0,\n margin: 0\n }}\n >\n <Typography\n sx={{ margin: 0, lineHeight: 1.8 }}\n variant=\"overline\"\n color=\"primary\"\n >\n {entry.title}\n </Typography>\n </ListItem>\n </a>\n )\n )}\n </List>\n ))}\n </Grid>\n ))}\n <Grid size={12}>\n <a href={`/${section.id}`}>\n <Button\n onClick={close}\n color=\"primary\"\n sx={{\n marginRight: '10px',\n marginBottom: '10px',\n float: 'right'\n }}\n >\n SHOW ALL OPTIONS...\n </Button>\n </a>\n </Grid>\n </Grid>\n </Paper>\n );\n}\n\nexport default Panel;\n","import React, { useMemo, useState } from 'react';\nimport Paper from '@mui/material/Paper';\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Close from '@mui/icons-material/Close';\nimport List from '@mui/material/List';\nimport SearchInputField from './SearchInputField.js';\n\nconst styles = {\n paper: {\n backgroundColor: '#f5f5f5',\n position: 'fixed',\n zIndex: 1000,\n paddingTop: '80px',\n width: '100%',\n overflow: 'auto',\n height: '100vh'\n },\n searchInputField: {\n float: 'right'\n }\n};\n\nfunction SearchPanel({ menu, close, onHoverSection = () => {} }) {\n const [searchTerm, setSearchTerm] = useState();\n\n const menuEntries = useMemo(\n () =>\n menu.flatMap(section =>\n section.columns.flatMap(col =>\n col.categories.flatMap(category =>\n category.items.map(item => ({\n ...item,\n sectionId: section.id,\n breadcrumb:\n `${section.title} > ${category.title} > ${item.title}`.replace(\n /&amp;/g,\n '&'\n )\n }))\n )\n )\n ),\n [menu]\n );\n\n const uniqueEntries = useMemo(\n () =>\n Object.values(\n menuEntries.reduce((uniques, entry) => {\n if (!uniques[entry.href]) {\n return { ...uniques, [entry.href]: entry };\n }\n return uniques;\n }, {})\n ),\n [menuEntries]\n );\n\n const handleFieldChange = (propertyName, newValue) => {\n setSearchTerm(newValue);\n };\n return (\n <Paper sx={styles.paper}>\n <Button\n onClick={close}\n color=\"secondary\"\n sx={{\n marginRight: '10px',\n marginTop: '10px',\n float: 'right',\n top: 0,\n right: 0\n }}\n >\n <Close />\n </Button>\n <Grid container>\n <Grid size={12} sm={6} md={4} lg={3} xl={3} justify-content=\"flex-end\">\n <SearchInputField\n value={searchTerm}\n onChange={handleFieldChange}\n textFieldProps={{\n autoFocus: true\n }}\n placeholder=\"start typing...\"\n />\n <List dense>\n {searchTerm?.length > 1 &&\n uniqueEntries\n .filter(\n e =>\n e.title.toLowerCase().includes(searchTerm.toLowerCase()) ||\n e.href.toLowerCase().includes(searchTerm.toLowerCase())\n )\n .map(entry => (\n <Box key={entry.href}>\n <a\n href={entry.href}\n style={{ textDecoration: 'none' }}\n onMouseEnter={() => onHoverSection(entry.sectionId)}\n onMouseLeave={() => onHoverSection(null)}\n onFocus={() => onHoverSection(entry.sectionId)}\n onBlur={() => onHoverSection(null)}\n >\n <ListItem\n sx={{\n paddingTop: 0,\n paddingBottom: 0,\n margin: 0,\n gap: '8px'\n }}\n >\n <Typography\n variant=\"overline\"\n color=\"primary\"\n sx={{ margin: 0, lineHeight: 1.8 }}\n >\n {entry.title}\n </Typography>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{ margin: 0, lineHeight: 1.8 }}\n >\n {entry.breadcrumb}\n </Typography>\n </ListItem>\n </a>\n </Box>\n ))}\n </List>\n </Grid>\n </Grid>\n </Paper>\n );\n}\n\nexport default SearchPanel;\n","import { createTheme } from '@mui/material/styles';\n\nconst linnTheme = createTheme();\n\nexport default linnTheme;\n","import moment from 'moment';\n\nexport function cloneDate(date) {\n return moment.isMoment(date) ? date.clone() : moment(date, 'MM-DD-YYYY');\n}\n\nexport function getWeekStartDate(date) {\n const dateClone = cloneDate(date);\n\n if (dateClone.day() === 6) {\n return dateClone.endOf('week');\n }\n\n return dateClone.startOf('week').subtract(1, 'days');\n}\n\nexport function getWeekEndDate(date) {\n const dateClone = cloneDate(date);\n\n if (dateClone.day() === 6) {\n return dateClone.endOf('week').add(6, 'days');\n }\n\n return dateClone.endOf('week').subtract(1, 'days');\n}\n","import React from 'react';\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\nimport { styled } from '@mui/material/styles';\nimport InputLabel from '@mui/material/InputLabel';\nimport moment from 'moment';\nimport { PickerDay } from '@mui/x-date-pickers/PickerDay';\n\nimport { getWeekStartDate, getWeekEndDate } from '../utilities/dateUtilities.js';\n\nconst CustomPickerDay = styled(PickerDay, {\n shouldForwardProp: prop =>\n prop !== 'dayIsBetween' && prop !== 'isFirstDay' && prop !== 'isLastDay'\n})(({ theme, dayIsBetween, isFirstDay, isLastDay }) => ({\n ...(dayIsBetween && {\n borderRadius: 0,\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.common.white,\n '&:hover, &:focus': {\n backgroundColor: theme.palette.primary.dark\n }\n }),\n ...(isFirstDay && {\n borderTopLeftRadius: '50%',\n borderBottomLeftRadius: '50%'\n }),\n ...(isLastDay && {\n borderTopRightRadius: '50%',\n borderBottomRightRadius: '50%'\n })\n}));\n\nexport default function LinnWeekPicker({\n selectedDate = new Date(),\n setWeekStartDate,\n propertyName = '',\n label = '',\n disabled = false,\n required = false\n}) {\n const handleChange = date => {\n setWeekStartDate(propertyName, getWeekStartDate(date));\n };\n\n const WeekPickerDay = pickersDayProps => {\n const { day: date } = pickersDayProps;\n if (!selectedDate) {\n return <PickerDay {...pickersDayProps} />;\n }\n\n const start = moment(getWeekStartDate(selectedDate));\n const end = moment(getWeekEndDate(selectedDate));\n\n const dayIsBetween = moment(date).isBetween(start, end, null, '[]');\n const isFirstDay = moment(date).isSame(start, 'day');\n const isLastDay = moment(date).isSame(end, 'day');\n\n return (\n <CustomPickerDay\n {...pickersDayProps}\n dayIsBetween={dayIsBetween}\n isFirstDay={isFirstDay}\n isLastDay={isLastDay}\n />\n );\n };\n\n return (\n <>\n {label && (\n <InputLabel required={required} sx={{ fontSize: '1rem', marginBottom: '8px' }}>\n {label}\n </InputLabel>\n )}\n <DatePicker\n disabled={disabled}\n value={selectedDate ? moment(selectedDate) : null}\n onChange={handleChange}\n format=\"DD/MM/YYYY\"\n slots={{ day: WeekPickerDay }}\n slotProps={{\n textField: {\n variant: 'outlined',\n fullWidth: true,\n size: 'small',\n sx: {\n mt: 1\n }\n }\n }}\n />\n </>\n );\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\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) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\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 printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\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}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\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 ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\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}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\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","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export const COMMON_MIME_TYPES = new Map([\n // https://github.com/guzzle/psr7/blob/2d9260799e713f1c475d3c5fdc3d6561ff7441b2/src/MimeType.php\n ['1km', 'application/vnd.1000minds.decision-model+xml'],\n ['3dml', 'text/vnd.in3d.3dml'],\n ['3ds', 'image/x-3ds'],\n ['3g2', 'video/3gpp2'],\n ['3gp', 'video/3gp'],\n ['3gpp', 'video/3gpp'],\n ['3mf', 'model/3mf'],\n ['7z', 'application/x-7z-compressed'],\n ['7zip', 'application/x-7z-compressed'],\n ['123', 'application/vnd.lotus-1-2-3'],\n ['aab', 'application/x-authorware-bin'],\n ['aac', 'audio/x-acc'],\n ['aam', 'application/x-authorware-map'],\n ['aas', 'application/x-authorware-seg'],\n ['abw', 'application/x-abiword'],\n ['ac', 'application/vnd.nokia.n-gage.ac+xml'],\n ['ac3', 'audio/ac3'],\n ['acc', 'application/vnd.americandynamics.acc'],\n ['ace', 'application/x-ace-compressed'],\n ['acu', 'application/vnd.acucobol'],\n ['acutc', 'application/vnd.acucorp'],\n ['adp', 'audio/adpcm'],\n ['aep', 'application/vnd.audiograph'],\n ['afm', 'application/x-font-type1'],\n ['afp', 'application/vnd.ibm.modcap'],\n ['ahead', 'application/vnd.ahead.space'],\n ['ai', 'application/pdf'],\n ['aif', 'audio/x-aiff'],\n ['aifc', 'audio/x-aiff'],\n ['aiff', 'audio/x-aiff'],\n ['air', 'application/vnd.adobe.air-application-installer-package+zip'],\n ['ait', 'application/vnd.dvb.ait'],\n ['ami', 'application/vnd.amiga.ami'],\n ['amr', 'audio/amr'],\n ['apk', 'application/vnd.android.package-archive'],\n ['apng', 'image/apng'],\n ['appcache', 'text/cache-manifest'],\n ['application', 'application/x-ms-application'],\n ['apr', 'application/vnd.lotus-approach'],\n ['arc', 'application/x-freearc'],\n ['arj', 'application/x-arj'],\n ['asc', 'application/pgp-signature'],\n ['asf', 'video/x-ms-asf'],\n ['asm', 'text/x-asm'],\n ['aso', 'application/vnd.accpac.simply.aso'],\n ['asx', 'video/x-ms-asf'],\n ['atc', 'application/vnd.acucorp'],\n ['atom', 'application/atom+xml'],\n ['atomcat', 'application/atomcat+xml'],\n ['atomdeleted', 'application/atomdeleted+xml'],\n ['atomsvc', 'application/atomsvc+xml'],\n ['atx', 'application/vnd.antix.game-component'],\n ['au', 'audio/x-au'],\n ['avi', 'video/x-msvideo'],\n ['avif', 'image/avif'],\n ['aw', 'application/applixware'],\n ['azf', 'application/vnd.airzip.filesecure.azf'],\n ['azs', 'application/vnd.airzip.filesecure.azs'],\n ['azv', 'image/vnd.airzip.accelerator.azv'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['b16', 'image/vnd.pco.b16'],\n ['bat', 'application/x-msdownload'],\n ['bcpio', 'application/x-bcpio'],\n ['bdf', 'application/x-font-bdf'],\n ['bdm', 'application/vnd.syncml.dm+wbxml'],\n ['bdoc', 'application/x-bdoc'],\n ['bed', 'application/vnd.realvnc.bed'],\n ['bh2', 'application/vnd.fujitsu.oasysprs'],\n ['bin', 'application/octet-stream'],\n ['blb', 'application/x-blorb'],\n ['blorb', 'application/x-blorb'],\n ['bmi', 'application/vnd.bmi'],\n ['bmml', 'application/vnd.balsamiq.bmml+xml'],\n ['bmp', 'image/bmp'],\n ['book', 'application/vnd.framemaker'],\n ['box', 'application/vnd.previewsystems.box'],\n ['boz', 'application/x-bzip2'],\n ['bpk', 'application/octet-stream'],\n ['bpmn', 'application/octet-stream'],\n ['bsp', 'model/vnd.valve.source.compiled-map'],\n ['btif', 'image/prs.btif'],\n ['buffer', 'application/octet-stream'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['c', 'text/x-c'],\n ['c4d', 'application/vnd.clonk.c4group'],\n ['c4f', 'application/vnd.clonk.c4group'],\n ['c4g', 'application/vnd.clonk.c4group'],\n ['c4p', 'application/vnd.clonk.c4group'],\n ['c4u', 'application/vnd.clonk.c4group'],\n ['c11amc', 'application/vnd.cluetrust.cartomobile-config'],\n ['c11amz', 'application/vnd.cluetrust.cartomobile-config-pkg'],\n ['cab', 'application/vnd.ms-cab-compressed'],\n ['caf', 'audio/x-caf'],\n ['cap', 'application/vnd.tcpdump.pcap'],\n ['car', 'application/vnd.curl.car'],\n ['cat', 'application/vnd.ms-pki.seccat'],\n ['cb7', 'application/x-cbr'],\n ['cba', 'application/x-cbr'],\n ['cbr', 'application/x-cbr'],\n ['cbt', 'application/x-cbr'],\n ['cbz', 'application/x-cbr'],\n ['cc', 'text/x-c'],\n ['cco', 'application/x-cocoa'],\n ['cct', 'application/x-director'],\n ['ccxml', 'application/ccxml+xml'],\n ['cdbcmsg', 'application/vnd.contact.cmsg'],\n ['cda', 'application/x-cdf'],\n ['cdf', 'application/x-netcdf'],\n ['cdfx', 'application/cdfx+xml'],\n ['cdkey', 'application/vnd.mediastation.cdkey'],\n ['cdmia', 'application/cdmi-capability'],\n ['cdmic', 'application/cdmi-container'],\n ['cdmid', 'application/cdmi-domain'],\n ['cdmio', 'application/cdmi-object'],\n ['cdmiq', 'application/cdmi-queue'],\n ['cdr', 'application/cdr'],\n ['cdx', 'chemical/x-cdx'],\n ['cdxml', 'application/vnd.chemdraw+xml'],\n ['cdy', 'application/vnd.cinderella'],\n ['cer', 'application/pkix-cert'],\n ['cfs', 'application/x-cfs-compressed'],\n ['cgm', 'image/cgm'],\n ['chat', 'application/x-chat'],\n ['chm', 'application/vnd.ms-htmlhelp'],\n ['chrt', 'application/vnd.kde.kchart'],\n ['cif', 'chemical/x-cif'],\n ['cii', 'application/vnd.anser-web-certificate-issue-initiation'],\n ['cil', 'application/vnd.ms-artgalry'],\n ['cjs', 'application/node'],\n ['cla', 'application/vnd.claymore'],\n ['class', 'application/octet-stream'],\n ['clkk', 'application/vnd.crick.clicker.keyboard'],\n ['clkp', 'application/vnd.crick.clicker.palette'],\n ['clkt', 'application/vnd.crick.clicker.template'],\n ['clkw', 'application/vnd.crick.clicker.wordbank'],\n ['clkx', 'application/vnd.crick.clicker'],\n ['clp', 'application/x-msclip'],\n ['cmc', 'application/vnd.cosmocaller'],\n ['cmdf', 'chemical/x-cmdf'],\n ['cml', 'chemical/x-cml'],\n ['cmp', 'application/vnd.yellowriver-custom-menu'],\n ['cmx', 'image/x-cmx'],\n ['cod', 'application/vnd.rim.cod'],\n ['coffee', 'text/coffeescript'],\n ['com', 'application/x-msdownload'],\n ['conf', 'text/plain'],\n ['cpio', 'application/x-cpio'],\n ['cpp', 'text/x-c'],\n ['cpt', 'application/mac-compactpro'],\n ['crd', 'application/x-mscardfile'],\n ['crl', 'application/pkix-crl'],\n ['crt', 'application/x-x509-ca-cert'],\n ['crx', 'application/x-chrome-extension'],\n ['cryptonote', 'application/vnd.rig.cryptonote'],\n ['csh', 'application/x-csh'],\n ['csl', 'application/vnd.citationstyles.style+xml'],\n ['csml', 'chemical/x-csml'],\n ['csp', 'application/vnd.commonspace'],\n ['csr', 'application/octet-stream'],\n ['css', 'text/css'],\n ['cst', 'application/x-director'],\n ['csv', 'text/csv'],\n ['cu', 'application/cu-seeme'],\n ['curl', 'text/vnd.curl'],\n ['cww', 'application/prs.cww'],\n ['cxt', 'application/x-director'],\n ['cxx', 'text/x-c'],\n ['dae', 'model/vnd.collada+xml'],\n ['daf', 'application/vnd.mobius.daf'],\n ['dart', 'application/vnd.dart'],\n ['dataless', 'application/vnd.fdsn.seed'],\n ['davmount', 'application/davmount+xml'],\n ['dbf', 'application/vnd.dbf'],\n ['dbk', 'application/docbook+xml'],\n ['dcr', 'application/x-director'],\n ['dcurl', 'text/vnd.curl.dcurl'],\n ['dd2', 'application/vnd.oma.dd2+xml'],\n ['ddd', 'application/vnd.fujixerox.ddd'],\n ['ddf', 'application/vnd.syncml.dmddf+xml'],\n ['dds', 'image/vnd.ms-dds'],\n ['deb', 'application/x-debian-package'],\n ['def', 'text/plain'],\n ['deploy', 'application/octet-stream'],\n ['der', 'application/x-x509-ca-cert'],\n ['dfac', 'application/vnd.dreamfactory'],\n ['dgc', 'application/x-dgc-compressed'],\n ['dic', 'text/x-c'],\n ['dir', 'application/x-director'],\n ['dis', 'application/vnd.mobius.dis'],\n ['disposition-notification', 'message/disposition-notification'],\n ['dist', 'application/octet-stream'],\n ['distz', 'application/octet-stream'],\n ['djv', 'image/vnd.djvu'],\n ['djvu', 'image/vnd.djvu'],\n ['dll', 'application/octet-stream'],\n ['dmg', 'application/x-apple-diskimage'],\n ['dmn', 'application/octet-stream'],\n ['dmp', 'application/vnd.tcpdump.pcap'],\n ['dms', 'application/octet-stream'],\n ['dna', 'application/vnd.dna'],\n ['doc', 'application/msword'],\n ['docm', 'application/vnd.ms-word.template.macroEnabled.12'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['dot', 'application/msword'],\n ['dotm', 'application/vnd.ms-word.template.macroEnabled.12'],\n ['dotx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'],\n ['dp', 'application/vnd.osgi.dp'],\n ['dpg', 'application/vnd.dpgraph'],\n ['dra', 'audio/vnd.dra'],\n ['drle', 'image/dicom-rle'],\n ['dsc', 'text/prs.lines.tag'],\n ['dssc', 'application/dssc+der'],\n ['dtb', 'application/x-dtbook+xml'],\n ['dtd', 'application/xml-dtd'],\n ['dts', 'audio/vnd.dts'],\n ['dtshd', 'audio/vnd.dts.hd'],\n ['dump', 'application/octet-stream'],\n ['dvb', 'video/vnd.dvb.file'],\n ['dvi', 'application/x-dvi'],\n ['dwd', 'application/atsc-dwd+xml'],\n ['dwf', 'model/vnd.dwf'],\n ['dwg', 'image/vnd.dwg'],\n ['dxf', 'image/vnd.dxf'],\n ['dxp', 'application/vnd.spotfire.dxp'],\n ['dxr', 'application/x-director'],\n ['ear', 'application/java-archive'],\n ['ecelp4800', 'audio/vnd.nuera.ecelp4800'],\n ['ecelp7470', 'audio/vnd.nuera.ecelp7470'],\n ['ecelp9600', 'audio/vnd.nuera.ecelp9600'],\n ['ecma', 'application/ecmascript'],\n ['edm', 'application/vnd.novadigm.edm'],\n ['edx', 'application/vnd.novadigm.edx'],\n ['efif', 'application/vnd.picsel'],\n ['ei6', 'application/vnd.pg.osasli'],\n ['elc', 'application/octet-stream'],\n ['emf', 'image/emf'],\n ['eml', 'message/rfc822'],\n ['emma', 'application/emma+xml'],\n ['emotionml', 'application/emotionml+xml'],\n ['emz', 'application/x-msmetafile'],\n ['eol', 'audio/vnd.digital-winds'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['eps', 'application/postscript'],\n ['epub', 'application/epub+zip'],\n ['es', 'application/ecmascript'],\n ['es3', 'application/vnd.eszigno3+xml'],\n ['esa', 'application/vnd.osgi.subsystem'],\n ['esf', 'application/vnd.epson.esf'],\n ['et3', 'application/vnd.eszigno3+xml'],\n ['etx', 'text/x-setext'],\n ['eva', 'application/x-eva'],\n ['evy', 'application/x-envoy'],\n ['exe', 'application/octet-stream'],\n ['exi', 'application/exi'],\n ['exp', 'application/express'],\n ['exr', 'image/aces'],\n ['ext', 'application/vnd.novadigm.ext'],\n ['ez', 'application/andrew-inset'],\n ['ez2', 'application/vnd.ezpix-album'],\n ['ez3', 'application/vnd.ezpix-package'],\n ['f', 'text/x-fortran'],\n ['f4v', 'video/mp4'],\n ['f77', 'text/x-fortran'],\n ['f90', 'text/x-fortran'],\n ['fbs', 'image/vnd.fastbidsheet'],\n ['fcdt', 'application/vnd.adobe.formscentral.fcdt'],\n ['fcs', 'application/vnd.isac.fcs'],\n ['fdf', 'application/vnd.fdf'],\n ['fdt', 'application/fdt+xml'],\n ['fe_launch', 'application/vnd.denovo.fcselayout-link'],\n ['fg5', 'application/vnd.fujitsu.oasysgp'],\n ['fgd', 'application/x-director'],\n ['fh', 'image/x-freehand'],\n ['fh4', 'image/x-freehand'],\n ['fh5', 'image/x-freehand'],\n ['fh7', 'image/x-freehand'],\n ['fhc', 'image/x-freehand'],\n ['fig', 'application/x-xfig'],\n ['fits', 'image/fits'],\n ['flac', 'audio/x-flac'],\n ['fli', 'video/x-fli'],\n ['flo', 'application/vnd.micrografx.flo'],\n ['flv', 'video/x-flv'],\n ['flw', 'application/vnd.kde.kivio'],\n ['flx', 'text/vnd.fmi.flexstor'],\n ['fly', 'text/vnd.fly'],\n ['fm', 'application/vnd.framemaker'],\n ['fnc', 'application/vnd.frogans.fnc'],\n ['fo', 'application/vnd.software602.filler.form+xml'],\n ['for', 'text/x-fortran'],\n ['fpx', 'image/vnd.fpx'],\n ['frame', 'application/vnd.framemaker'],\n ['fsc', 'application/vnd.fsc.weblaunch'],\n ['fst', 'image/vnd.fst'],\n ['ftc', 'application/vnd.fluxtime.clip'],\n ['fti', 'application/vnd.anser-web-funds-transfer-initiation'],\n ['fvt', 'video/vnd.fvt'],\n ['fxp', 'application/vnd.adobe.fxp'],\n ['fxpl', 'application/vnd.adobe.fxp'],\n ['fzs', 'application/vnd.fuzzysheet'],\n ['g2w', 'application/vnd.geoplan'],\n ['g3', 'image/g3fax'],\n ['g3w', 'application/vnd.geospace'],\n ['gac', 'application/vnd.groove-account'],\n ['gam', 'application/x-tads'],\n ['gbr', 'application/rpki-ghostbusters'],\n ['gca', 'application/x-gca-compressed'],\n ['gdl', 'model/vnd.gdl'],\n ['gdoc', 'application/vnd.google-apps.document'],\n ['geo', 'application/vnd.dynageo'],\n ['geojson', 'application/geo+json'],\n ['gex', 'application/vnd.geometry-explorer'],\n ['ggb', 'application/vnd.geogebra.file'],\n ['ggt', 'application/vnd.geogebra.tool'],\n ['ghf', 'application/vnd.groove-help'],\n ['gif', 'image/gif'],\n ['gim', 'application/vnd.groove-identity-message'],\n ['glb', 'model/gltf-binary'],\n ['gltf', 'model/gltf+json'],\n ['gml', 'application/gml+xml'],\n ['gmx', 'application/vnd.gmx'],\n ['gnumeric', 'application/x-gnumeric'],\n ['gpg', 'application/gpg-keys'],\n ['gph', 'application/vnd.flographit'],\n ['gpx', 'application/gpx+xml'],\n ['gqf', 'application/vnd.grafeq'],\n ['gqs', 'application/vnd.grafeq'],\n ['gram', 'application/srgs'],\n ['gramps', 'application/x-gramps-xml'],\n ['gre', 'application/vnd.geometry-explorer'],\n ['grv', 'application/vnd.groove-injector'],\n ['grxml', 'application/srgs+xml'],\n ['gsf', 'application/x-font-ghostscript'],\n ['gsheet', 'application/vnd.google-apps.spreadsheet'],\n ['gslides', 'application/vnd.google-apps.presentation'],\n ['gtar', 'application/x-gtar'],\n ['gtm', 'application/vnd.groove-tool-message'],\n ['gtw', 'model/vnd.gtw'],\n ['gv', 'text/vnd.graphviz'],\n ['gxf', 'application/gxf'],\n ['gxt', 'application/vnd.geonext'],\n ['gz', 'application/gzip'],\n ['gzip', 'application/gzip'],\n ['h', 'text/x-c'],\n ['h261', 'video/h261'],\n ['h263', 'video/h263'],\n ['h264', 'video/h264'],\n ['hal', 'application/vnd.hal+xml'],\n ['hbci', 'application/vnd.hbci'],\n ['hbs', 'text/x-handlebars-template'],\n ['hdd', 'application/x-virtualbox-hdd'],\n ['hdf', 'application/x-hdf'],\n ['heic', 'image/heic'],\n ['heics', 'image/heic-sequence'],\n ['heif', 'image/heif'],\n ['heifs', 'image/heif-sequence'],\n ['hej2', 'image/hej2k'],\n ['held', 'application/atsc-held+xml'],\n ['hh', 'text/x-c'],\n ['hjson', 'application/hjson'],\n ['hlp', 'application/winhlp'],\n ['hpgl', 'application/vnd.hp-hpgl'],\n ['hpid', 'application/vnd.hp-hpid'],\n ['hps', 'application/vnd.hp-hps'],\n ['hqx', 'application/mac-binhex40'],\n ['hsj2', 'image/hsj2'],\n ['htc', 'text/x-component'],\n ['htke', 'application/vnd.kenameaapp'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['hvd', 'application/vnd.yamaha.hv-dic'],\n ['hvp', 'application/vnd.yamaha.hv-voice'],\n ['hvs', 'application/vnd.yamaha.hv-script'],\n ['i2g', 'application/vnd.intergeo'],\n ['icc', 'application/vnd.iccprofile'],\n ['ice', 'x-conference/x-cooltalk'],\n ['icm', 'application/vnd.iccprofile'],\n ['ico', 'image/x-icon'],\n ['ics', 'text/calendar'],\n ['ief', 'image/ief'],\n ['ifb', 'text/calendar'],\n ['ifm', 'application/vnd.shana.informed.formdata'],\n ['iges', 'model/iges'],\n ['igl', 'application/vnd.igloader'],\n ['igm', 'application/vnd.insors.igm'],\n ['igs', 'model/iges'],\n ['igx', 'application/vnd.micrografx.igx'],\n ['iif', 'application/vnd.shana.informed.interchange'],\n ['img', 'application/octet-stream'],\n ['imp', 'application/vnd.accpac.simply.imp'],\n ['ims', 'application/vnd.ms-ims'],\n ['in', 'text/plain'],\n ['ini', 'text/plain'],\n ['ink', 'application/inkml+xml'],\n ['inkml', 'application/inkml+xml'],\n ['install', 'application/x-install-instructions'],\n ['iota', 'application/vnd.astraea-software.iota'],\n ['ipfix', 'application/ipfix'],\n ['ipk', 'application/vnd.shana.informed.package'],\n ['irm', 'application/vnd.ibm.rights-management'],\n ['irp', 'application/vnd.irepository.package+xml'],\n ['iso', 'application/x-iso9660-image'],\n ['itp', 'application/vnd.shana.informed.formtemplate'],\n ['its', 'application/its+xml'],\n ['ivp', 'application/vnd.immervision-ivp'],\n ['ivu', 'application/vnd.immervision-ivu'],\n ['jad', 'text/vnd.sun.j2me.app-descriptor'],\n ['jade', 'text/jade'],\n ['jam', 'application/vnd.jam'],\n ['jar', 'application/java-archive'],\n ['jardiff', 'application/x-java-archive-diff'],\n ['java', 'text/x-java-source'],\n ['jhc', 'image/jphc'],\n ['jisp', 'application/vnd.jisp'],\n ['jls', 'image/jls'],\n ['jlt', 'application/vnd.hp-jlyt'],\n ['jng', 'image/x-jng'],\n ['jnlp', 'application/x-java-jnlp-file'],\n ['joda', 'application/vnd.joost.joda-archive'],\n ['jp2', 'image/jp2'],\n ['jpe', 'image/jpeg'],\n ['jpeg', 'image/jpeg'],\n ['jpf', 'image/jpx'],\n ['jpg', 'image/jpeg'],\n ['jpg2', 'image/jp2'],\n ['jpgm', 'video/jpm'],\n ['jpgv', 'video/jpeg'],\n ['jph', 'image/jph'],\n ['jpm', 'video/jpm'],\n ['jpx', 'image/jpx'],\n ['js', 'application/javascript'],\n ['json', 'application/json'],\n ['json5', 'application/json5'],\n ['jsonld', 'application/ld+json'],\n // https://jsonlines.org/\n ['jsonl', 'application/jsonl'],\n ['jsonml', 'application/jsonml+json'],\n ['jsx', 'text/jsx'],\n ['jxr', 'image/jxr'],\n ['jxra', 'image/jxra'],\n ['jxrs', 'image/jxrs'],\n ['jxs', 'image/jxs'],\n ['jxsc', 'image/jxsc'],\n ['jxsi', 'image/jxsi'],\n ['jxss', 'image/jxss'],\n ['kar', 'audio/midi'],\n ['karbon', 'application/vnd.kde.karbon'],\n ['kdb', 'application/octet-stream'],\n ['kdbx', 'application/x-keepass2'],\n ['key', 'application/x-iwork-keynote-sffkey'],\n ['kfo', 'application/vnd.kde.kformula'],\n ['kia', 'application/vnd.kidspiration'],\n ['kml', 'application/vnd.google-earth.kml+xml'],\n ['kmz', 'application/vnd.google-earth.kmz'],\n ['kne', 'application/vnd.kinar'],\n ['knp', 'application/vnd.kinar'],\n ['kon', 'application/vnd.kde.kontour'],\n ['kpr', 'application/vnd.kde.kpresenter'],\n ['kpt', 'application/vnd.kde.kpresenter'],\n ['kpxx', 'application/vnd.ds-keypoint'],\n ['ksp', 'application/vnd.kde.kspread'],\n ['ktr', 'application/vnd.kahootz'],\n ['ktx', 'image/ktx'],\n ['ktx2', 'image/ktx2'],\n ['ktz', 'application/vnd.kahootz'],\n ['kwd', 'application/vnd.kde.kword'],\n ['kwt', 'application/vnd.kde.kword'],\n ['lasxml', 'application/vnd.las.las+xml'],\n ['latex', 'application/x-latex'],\n ['lbd', 'application/vnd.llamagraphics.life-balance.desktop'],\n ['lbe', 'application/vnd.llamagraphics.life-balance.exchange+xml'],\n ['les', 'application/vnd.hhe.lesson-player'],\n ['less', 'text/less'],\n ['lgr', 'application/lgr+xml'],\n ['lha', 'application/octet-stream'],\n ['link66', 'application/vnd.route66.link66+xml'],\n ['list', 'text/plain'],\n ['list3820', 'application/vnd.ibm.modcap'],\n ['listafp', 'application/vnd.ibm.modcap'],\n ['litcoffee', 'text/coffeescript'],\n ['lnk', 'application/x-ms-shortcut'],\n ['log', 'text/plain'],\n ['lostxml', 'application/lost+xml'],\n ['lrf', 'application/octet-stream'],\n ['lrm', 'application/vnd.ms-lrm'],\n ['ltf', 'application/vnd.frogans.ltf'],\n ['lua', 'text/x-lua'],\n ['luac', 'application/x-lua-bytecode'],\n ['lvp', 'audio/vnd.lucent.voice'],\n ['lwp', 'application/vnd.lotus-wordpro'],\n ['lzh', 'application/octet-stream'],\n ['m1v', 'video/mpeg'],\n ['m2a', 'audio/mpeg'],\n ['m2v', 'video/mpeg'],\n ['m3a', 'audio/mpeg'],\n ['m3u', 'text/plain'],\n ['m3u8', 'application/vnd.apple.mpegurl'],\n ['m4a', 'audio/x-m4a'],\n ['m4p', 'application/mp4'],\n ['m4s', 'video/iso.segment'],\n ['m4u', 'application/vnd.mpegurl'],\n ['m4v', 'video/x-m4v'],\n ['m13', 'application/x-msmediaview'],\n ['m14', 'application/x-msmediaview'],\n ['m21', 'application/mp21'],\n ['ma', 'application/mathematica'],\n ['mads', 'application/mads+xml'],\n ['maei', 'application/mmt-aei+xml'],\n ['mag', 'application/vnd.ecowin.chart'],\n ['maker', 'application/vnd.framemaker'],\n ['man', 'text/troff'],\n ['manifest', 'text/cache-manifest'],\n ['map', 'application/json'],\n ['mar', 'application/octet-stream'],\n ['markdown', 'text/markdown'],\n ['mathml', 'application/mathml+xml'],\n ['mb', 'application/mathematica'],\n ['mbk', 'application/vnd.mobius.mbk'],\n ['mbox', 'application/mbox'],\n ['mc1', 'application/vnd.medcalcdata'],\n ['mcd', 'application/vnd.mcd'],\n ['mcurl', 'text/vnd.curl.mcurl'],\n ['md', 'text/markdown'],\n ['mdb', 'application/x-msaccess'],\n ['mdi', 'image/vnd.ms-modi'],\n ['mdx', 'text/mdx'],\n ['me', 'text/troff'],\n ['mesh', 'model/mesh'],\n ['meta4', 'application/metalink4+xml'],\n ['metalink', 'application/metalink+xml'],\n ['mets', 'application/mets+xml'],\n ['mfm', 'application/vnd.mfmp'],\n ['mft', 'application/rpki-manifest'],\n ['mgp', 'application/vnd.osgeo.mapguide.package'],\n ['mgz', 'application/vnd.proteus.magazine'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mie', 'application/x-mie'],\n ['mif', 'application/vnd.mif'],\n ['mime', 'message/rfc822'],\n ['mj2', 'video/mj2'],\n ['mjp2', 'video/mj2'],\n ['mjs', 'application/javascript'],\n ['mk3d', 'video/x-matroska'],\n ['mka', 'audio/x-matroska'],\n ['mkd', 'text/x-markdown'],\n ['mks', 'video/x-matroska'],\n ['mkv', 'video/x-matroska'],\n ['mlp', 'application/vnd.dolby.mlp'],\n ['mmd', 'application/vnd.chipnuts.karaoke-mmd'],\n ['mmf', 'application/vnd.smaf'],\n ['mml', 'text/mathml'],\n ['mmr', 'image/vnd.fujixerox.edmics-mmr'],\n ['mng', 'video/x-mng'],\n ['mny', 'application/x-msmoney'],\n ['mobi', 'application/x-mobipocket-ebook'],\n ['mods', 'application/mods+xml'],\n ['mov', 'video/quicktime'],\n ['movie', 'video/x-sgi-movie'],\n ['mp2', 'audio/mpeg'],\n ['mp2a', 'audio/mpeg'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mp4a', 'audio/mp4'],\n ['mp4s', 'application/mp4'],\n ['mp4v', 'video/mp4'],\n ['mp21', 'application/mp21'],\n ['mpc', 'application/vnd.mophun.certificate'],\n ['mpd', 'application/dash+xml'],\n ['mpe', 'video/mpeg'],\n ['mpeg', 'video/mpeg'],\n ['mpg', 'video/mpeg'],\n ['mpg4', 'video/mp4'],\n ['mpga', 'audio/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['mpm', 'application/vnd.blueice.multipass'],\n ['mpn', 'application/vnd.mophun.application'],\n ['mpp', 'application/vnd.ms-project'],\n ['mpt', 'application/vnd.ms-project'],\n ['mpy', 'application/vnd.ibm.minipay'],\n ['mqy', 'application/vnd.mobius.mqy'],\n ['mrc', 'application/marc'],\n ['mrcx', 'application/marcxml+xml'],\n ['ms', 'text/troff'],\n ['mscml', 'application/mediaservercontrol+xml'],\n ['mseed', 'application/vnd.fdsn.mseed'],\n ['mseq', 'application/vnd.mseq'],\n ['msf', 'application/vnd.epson.msf'],\n ['msg', 'application/vnd.ms-outlook'],\n ['msh', 'model/mesh'],\n ['msi', 'application/x-msdownload'],\n ['msl', 'application/vnd.mobius.msl'],\n ['msm', 'application/octet-stream'],\n ['msp', 'application/octet-stream'],\n ['msty', 'application/vnd.muvee.style'],\n ['mtl', 'model/mtl'],\n ['mts', 'model/vnd.mts'],\n ['mus', 'application/vnd.musician'],\n ['musd', 'application/mmt-usd+xml'],\n ['musicxml', 'application/vnd.recordare.musicxml+xml'],\n ['mvb', 'application/x-msmediaview'],\n ['mvt', 'application/vnd.mapbox-vector-tile'],\n ['mwf', 'application/vnd.mfer'],\n ['mxf', 'application/mxf'],\n ['mxl', 'application/vnd.recordare.musicxml'],\n ['mxmf', 'audio/mobile-xmf'],\n ['mxml', 'application/xv+xml'],\n ['mxs', 'application/vnd.triscape.mxs'],\n ['mxu', 'video/vnd.mpegurl'],\n ['n-gage', 'application/vnd.nokia.n-gage.symbian.install'],\n ['n3', 'text/n3'],\n ['nb', 'application/mathematica'],\n ['nbp', 'application/vnd.wolfram.player'],\n ['nc', 'application/x-netcdf'],\n ['ncx', 'application/x-dtbncx+xml'],\n ['nfo', 'text/x-nfo'],\n ['ngdat', 'application/vnd.nokia.n-gage.data'],\n ['nitf', 'application/vnd.nitf'],\n ['nlu', 'application/vnd.neurolanguage.nlu'],\n ['nml', 'application/vnd.enliven'],\n ['nnd', 'application/vnd.noblenet-directory'],\n ['nns', 'application/vnd.noblenet-sealer'],\n ['nnw', 'application/vnd.noblenet-web'],\n ['npx', 'image/vnd.net-fpx'],\n ['nq', 'application/n-quads'],\n ['nsc', 'application/x-conference'],\n ['nsf', 'application/vnd.lotus-notes'],\n ['nt', 'application/n-triples'],\n ['ntf', 'application/vnd.nitf'],\n ['numbers', 'application/x-iwork-numbers-sffnumbers'],\n ['nzb', 'application/x-nzb'],\n ['oa2', 'application/vnd.fujitsu.oasys2'],\n ['oa3', 'application/vnd.fujitsu.oasys3'],\n ['oas', 'application/vnd.fujitsu.oasys'],\n ['obd', 'application/x-msbinder'],\n ['obgx', 'application/vnd.openblox.game+xml'],\n ['obj', 'model/obj'],\n ['oda', 'application/oda'],\n ['odb', 'application/vnd.oasis.opendocument.database'],\n ['odc', 'application/vnd.oasis.opendocument.chart'],\n ['odf', 'application/vnd.oasis.opendocument.formula'],\n ['odft', 'application/vnd.oasis.opendocument.formula-template'],\n ['odg', 'application/vnd.oasis.opendocument.graphics'],\n ['odi', 'application/vnd.oasis.opendocument.image'],\n ['odm', 'application/vnd.oasis.opendocument.text-master'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogex', 'model/vnd.opengex'],\n ['ogg', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['omdoc', 'application/omdoc+xml'],\n ['onepkg', 'application/onenote'],\n ['onetmp', 'application/onenote'],\n ['onetoc', 'application/onenote'],\n ['onetoc2', 'application/onenote'],\n ['opf', 'application/oebps-package+xml'],\n ['opml', 'text/x-opml'],\n ['oprc', 'application/vnd.palm'],\n ['opus', 'audio/ogg'],\n ['org', 'text/x-org'],\n ['osf', 'application/vnd.yamaha.openscoreformat'],\n ['osfpvg', 'application/vnd.yamaha.openscoreformat.osfpvg+xml'],\n ['osm', 'application/vnd.openstreetmap.data+xml'],\n ['otc', 'application/vnd.oasis.opendocument.chart-template'],\n ['otf', 'font/otf'],\n ['otg', 'application/vnd.oasis.opendocument.graphics-template'],\n ['oth', 'application/vnd.oasis.opendocument.text-web'],\n ['oti', 'application/vnd.oasis.opendocument.image-template'],\n ['otp', 'application/vnd.oasis.opendocument.presentation-template'],\n ['ots', 'application/vnd.oasis.opendocument.spreadsheet-template'],\n ['ott', 'application/vnd.oasis.opendocument.text-template'],\n ['ova', 'application/x-virtualbox-ova'],\n ['ovf', 'application/x-virtualbox-ovf'],\n ['owl', 'application/rdf+xml'],\n ['oxps', 'application/oxps'],\n ['oxt', 'application/vnd.openofficeorg.extension'],\n ['p', 'text/x-pascal'],\n ['p7a', 'application/x-pkcs7-signature'],\n ['p7b', 'application/x-pkcs7-certificates'],\n ['p7c', 'application/pkcs7-mime'],\n ['p7m', 'application/pkcs7-mime'],\n ['p7r', 'application/x-pkcs7-certreqresp'],\n ['p7s', 'application/pkcs7-signature'],\n ['p8', 'application/pkcs8'],\n ['p10', 'application/x-pkcs10'],\n ['p12', 'application/x-pkcs12'],\n ['pac', 'application/x-ns-proxy-autoconfig'],\n ['pages', 'application/x-iwork-pages-sffpages'],\n ['pas', 'text/x-pascal'],\n ['paw', 'application/vnd.pawaafile'],\n ['pbd', 'application/vnd.powerbuilder6'],\n ['pbm', 'image/x-portable-bitmap'],\n ['pcap', 'application/vnd.tcpdump.pcap'],\n ['pcf', 'application/x-font-pcf'],\n ['pcl', 'application/vnd.hp-pcl'],\n ['pclxl', 'application/vnd.hp-pclxl'],\n ['pct', 'image/x-pict'],\n ['pcurl', 'application/vnd.curl.pcurl'],\n ['pcx', 'image/x-pcx'],\n ['pdb', 'application/x-pilot'],\n ['pde', 'text/x-processing'],\n ['pdf', 'application/pdf'],\n ['pem', 'application/x-x509-user-cert'],\n ['pfa', 'application/x-font-type1'],\n ['pfb', 'application/x-font-type1'],\n ['pfm', 'application/x-font-type1'],\n ['pfr', 'application/font-tdpfr'],\n ['pfx', 'application/x-pkcs12'],\n ['pgm', 'image/x-portable-graymap'],\n ['pgn', 'application/x-chess-pgn'],\n ['pgp', 'application/pgp'],\n ['php', 'application/x-httpd-php'],\n ['php3', 'application/x-httpd-php'],\n ['php4', 'application/x-httpd-php'],\n ['phps', 'application/x-httpd-php-source'],\n ['phtml', 'application/x-httpd-php'],\n ['pic', 'image/x-pict'],\n ['pkg', 'application/octet-stream'],\n ['pki', 'application/pkixcmp'],\n ['pkipath', 'application/pkix-pkipath'],\n ['pkpass', 'application/vnd.apple.pkpass'],\n ['pl', 'application/x-perl'],\n ['plb', 'application/vnd.3gpp.pic-bw-large'],\n ['plc', 'application/vnd.mobius.plc'],\n ['plf', 'application/vnd.pocketlearn'],\n ['pls', 'application/pls+xml'],\n ['pm', 'application/x-perl'],\n ['pml', 'application/vnd.ctc-posml'],\n ['png', 'image/png'],\n ['pnm', 'image/x-portable-anymap'],\n ['portpkg', 'application/vnd.macports.portpkg'],\n ['pot', 'application/vnd.ms-powerpoint'],\n ['potm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],\n ['potx', 'application/vnd.openxmlformats-officedocument.presentationml.template'],\n ['ppa', 'application/vnd.ms-powerpoint'],\n ['ppam', 'application/vnd.ms-powerpoint.addin.macroEnabled.12'],\n ['ppd', 'application/vnd.cups-ppd'],\n ['ppm', 'image/x-portable-pixmap'],\n ['pps', 'application/vnd.ms-powerpoint'],\n ['ppsm', 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'],\n ['ppsx', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'],\n ['ppt', 'application/powerpoint'],\n ['pptm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['pqa', 'application/vnd.palm'],\n ['prc', 'application/x-pilot'],\n ['pre', 'application/vnd.lotus-freelance'],\n ['prf', 'application/pics-rules'],\n ['provx', 'application/provenance+xml'],\n ['ps', 'application/postscript'],\n ['psb', 'application/vnd.3gpp.pic-bw-small'],\n ['psd', 'application/x-photoshop'],\n ['psf', 'application/x-font-linux-psf'],\n ['pskcxml', 'application/pskc+xml'],\n ['pti', 'image/prs.pti'],\n ['ptid', 'application/vnd.pvi.ptid1'],\n ['pub', 'application/x-mspublisher'],\n ['pvb', 'application/vnd.3gpp.pic-bw-var'],\n ['pwn', 'application/vnd.3m.post-it-notes'],\n ['pya', 'audio/vnd.ms-playready.media.pya'],\n ['pyv', 'video/vnd.ms-playready.media.pyv'],\n ['qam', 'application/vnd.epson.quickanime'],\n ['qbo', 'application/vnd.intu.qbo'],\n ['qfx', 'application/vnd.intu.qfx'],\n ['qps', 'application/vnd.publishare-delta-tree'],\n ['qt', 'video/quicktime'],\n ['qwd', 'application/vnd.quark.quarkxpress'],\n ['qwt', 'application/vnd.quark.quarkxpress'],\n ['qxb', 'application/vnd.quark.quarkxpress'],\n ['qxd', 'application/vnd.quark.quarkxpress'],\n ['qxl', 'application/vnd.quark.quarkxpress'],\n ['qxt', 'application/vnd.quark.quarkxpress'],\n ['ra', 'audio/x-realaudio'],\n ['ram', 'audio/x-pn-realaudio'],\n ['raml', 'application/raml+yaml'],\n ['rapd', 'application/route-apd+xml'],\n ['rar', 'application/x-rar'],\n ['ras', 'image/x-cmu-raster'],\n ['rcprofile', 'application/vnd.ipunplugged.rcprofile'],\n ['rdf', 'application/rdf+xml'],\n ['rdz', 'application/vnd.data-vision.rdz'],\n ['relo', 'application/p2p-overlay+xml'],\n ['rep', 'application/vnd.businessobjects'],\n ['res', 'application/x-dtbresource+xml'],\n ['rgb', 'image/x-rgb'],\n ['rif', 'application/reginfo+xml'],\n ['rip', 'audio/vnd.rip'],\n ['ris', 'application/x-research-info-systems'],\n ['rl', 'application/resource-lists+xml'],\n ['rlc', 'image/vnd.fujixerox.edmics-rlc'],\n ['rld', 'application/resource-lists-diff+xml'],\n ['rm', 'audio/x-pn-realaudio'],\n ['rmi', 'audio/midi'],\n ['rmp', 'audio/x-pn-realaudio-plugin'],\n ['rms', 'application/vnd.jcp.javame.midlet-rms'],\n ['rmvb', 'application/vnd.rn-realmedia-vbr'],\n ['rnc', 'application/relax-ng-compact-syntax'],\n ['rng', 'application/xml'],\n ['roa', 'application/rpki-roa'],\n ['roff', 'text/troff'],\n ['rp9', 'application/vnd.cloanto.rp9'],\n ['rpm', 'audio/x-pn-realaudio-plugin'],\n ['rpss', 'application/vnd.nokia.radio-presets'],\n ['rpst', 'application/vnd.nokia.radio-preset'],\n ['rq', 'application/sparql-query'],\n ['rs', 'application/rls-services+xml'],\n ['rsa', 'application/x-pkcs7'],\n ['rsat', 'application/atsc-rsat+xml'],\n ['rsd', 'application/rsd+xml'],\n ['rsheet', 'application/urc-ressheet+xml'],\n ['rss', 'application/rss+xml'],\n ['rtf', 'text/rtf'],\n ['rtx', 'text/richtext'],\n ['run', 'application/x-makeself'],\n ['rusd', 'application/route-usd+xml'],\n ['rv', 'video/vnd.rn-realvideo'],\n ['s', 'text/x-asm'],\n ['s3m', 'audio/s3m'],\n ['saf', 'application/vnd.yamaha.smaf-audio'],\n ['sass', 'text/x-sass'],\n ['sbml', 'application/sbml+xml'],\n ['sc', 'application/vnd.ibm.secure-container'],\n ['scd', 'application/x-msschedule'],\n ['scm', 'application/vnd.lotus-screencam'],\n ['scq', 'application/scvp-cv-request'],\n ['scs', 'application/scvp-cv-response'],\n ['scss', 'text/x-scss'],\n ['scurl', 'text/vnd.curl.scurl'],\n ['sda', 'application/vnd.stardivision.draw'],\n ['sdc', 'application/vnd.stardivision.calc'],\n ['sdd', 'application/vnd.stardivision.impress'],\n ['sdkd', 'application/vnd.solent.sdkm+xml'],\n ['sdkm', 'application/vnd.solent.sdkm+xml'],\n ['sdp', 'application/sdp'],\n ['sdw', 'application/vnd.stardivision.writer'],\n ['sea', 'application/octet-stream'],\n ['see', 'application/vnd.seemail'],\n ['seed', 'application/vnd.fdsn.seed'],\n ['sema', 'application/vnd.sema'],\n ['semd', 'application/vnd.semd'],\n ['semf', 'application/vnd.semf'],\n ['senmlx', 'application/senml+xml'],\n ['sensmlx', 'application/sensml+xml'],\n ['ser', 'application/java-serialized-object'],\n ['setpay', 'application/set-payment-initiation'],\n ['setreg', 'application/set-registration-initiation'],\n ['sfd-hdstx', 'application/vnd.hydrostatix.sof-data'],\n ['sfs', 'application/vnd.spotfire.sfs'],\n ['sfv', 'text/x-sfv'],\n ['sgi', 'image/sgi'],\n ['sgl', 'application/vnd.stardivision.writer-global'],\n ['sgm', 'text/sgml'],\n ['sgml', 'text/sgml'],\n ['sh', 'application/x-sh'],\n ['shar', 'application/x-shar'],\n ['shex', 'text/shex'],\n ['shf', 'application/shf+xml'],\n ['shtml', 'text/html'],\n ['sid', 'image/x-mrsid-image'],\n ['sieve', 'application/sieve'],\n ['sig', 'application/pgp-signature'],\n ['sil', 'audio/silk'],\n ['silo', 'model/mesh'],\n ['sis', 'application/vnd.symbian.install'],\n ['sisx', 'application/vnd.symbian.install'],\n ['sit', 'application/x-stuffit'],\n ['sitx', 'application/x-stuffitx'],\n ['siv', 'application/sieve'],\n ['skd', 'application/vnd.koan'],\n ['skm', 'application/vnd.koan'],\n ['skp', 'application/vnd.koan'],\n ['skt', 'application/vnd.koan'],\n ['sldm', 'application/vnd.ms-powerpoint.slide.macroenabled.12'],\n ['sldx', 'application/vnd.openxmlformats-officedocument.presentationml.slide'],\n ['slim', 'text/slim'],\n ['slm', 'text/slim'],\n ['sls', 'application/route-s-tsid+xml'],\n ['slt', 'application/vnd.epson.salt'],\n ['sm', 'application/vnd.stepmania.stepchart'],\n ['smf', 'application/vnd.stardivision.math'],\n ['smi', 'application/smil'],\n ['smil', 'application/smil'],\n ['smv', 'video/x-smv'],\n ['smzip', 'application/vnd.stepmania.package'],\n ['snd', 'audio/basic'],\n ['snf', 'application/x-font-snf'],\n ['so', 'application/octet-stream'],\n ['spc', 'application/x-pkcs7-certificates'],\n ['spdx', 'text/spdx'],\n ['spf', 'application/vnd.yamaha.smaf-phrase'],\n ['spl', 'application/x-futuresplash'],\n ['spot', 'text/vnd.in3d.spot'],\n ['spp', 'application/scvp-vp-response'],\n ['spq', 'application/scvp-vp-request'],\n ['spx', 'audio/ogg'],\n ['sql', 'application/x-sql'],\n ['src', 'application/x-wais-source'],\n ['srt', 'application/x-subrip'],\n ['sru', 'application/sru+xml'],\n ['srx', 'application/sparql-results+xml'],\n ['ssdl', 'application/ssdl+xml'],\n ['sse', 'application/vnd.kodak-descriptor'],\n ['ssf', 'application/vnd.epson.ssf'],\n ['ssml', 'application/ssml+xml'],\n ['sst', 'application/octet-stream'],\n ['st', 'application/vnd.sailingtracker.track'],\n ['stc', 'application/vnd.sun.xml.calc.template'],\n ['std', 'application/vnd.sun.xml.draw.template'],\n ['stf', 'application/vnd.wt.stf'],\n ['sti', 'application/vnd.sun.xml.impress.template'],\n ['stk', 'application/hyperstudio'],\n ['stl', 'model/stl'],\n ['stpx', 'model/step+xml'],\n ['stpxz', 'model/step-xml+zip'],\n ['stpz', 'model/step+zip'],\n ['str', 'application/vnd.pg.format'],\n ['stw', 'application/vnd.sun.xml.writer.template'],\n ['styl', 'text/stylus'],\n ['stylus', 'text/stylus'],\n ['sub', 'text/vnd.dvb.subtitle'],\n ['sus', 'application/vnd.sus-calendar'],\n ['susp', 'application/vnd.sus-calendar'],\n ['sv4cpio', 'application/x-sv4cpio'],\n ['sv4crc', 'application/x-sv4crc'],\n ['svc', 'application/vnd.dvb.service'],\n ['svd', 'application/vnd.svd'],\n ['svg', 'image/svg+xml'],\n ['svgz', 'image/svg+xml'],\n ['swa', 'application/x-director'],\n ['swf', 'application/x-shockwave-flash'],\n ['swi', 'application/vnd.aristanetworks.swi'],\n ['swidtag', 'application/swid+xml'],\n ['sxc', 'application/vnd.sun.xml.calc'],\n ['sxd', 'application/vnd.sun.xml.draw'],\n ['sxg', 'application/vnd.sun.xml.writer.global'],\n ['sxi', 'application/vnd.sun.xml.impress'],\n ['sxm', 'application/vnd.sun.xml.math'],\n ['sxw', 'application/vnd.sun.xml.writer'],\n ['t', 'text/troff'],\n ['t3', 'application/x-t3vm-image'],\n ['t38', 'image/t38'],\n ['taglet', 'application/vnd.mynfc'],\n ['tao', 'application/vnd.tao.intent-module-archive'],\n ['tap', 'image/vnd.tencent.tap'],\n ['tar', 'application/x-tar'],\n ['tcap', 'application/vnd.3gpp2.tcap'],\n ['tcl', 'application/x-tcl'],\n ['td', 'application/urc-targetdesc+xml'],\n ['teacher', 'application/vnd.smart.teacher'],\n ['tei', 'application/tei+xml'],\n ['teicorpus', 'application/tei+xml'],\n ['tex', 'application/x-tex'],\n ['texi', 'application/x-texinfo'],\n ['texinfo', 'application/x-texinfo'],\n ['text', 'text/plain'],\n ['tfi', 'application/thraud+xml'],\n ['tfm', 'application/x-tex-tfm'],\n ['tfx', 'image/tiff-fx'],\n ['tga', 'image/x-tga'],\n ['tgz', 'application/x-tar'],\n ['thmx', 'application/vnd.ms-officetheme'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['tk', 'application/x-tcl'],\n ['tmo', 'application/vnd.tmobile-livetv'],\n ['toml', 'application/toml'],\n ['torrent', 'application/x-bittorrent'],\n ['tpl', 'application/vnd.groove-tool-template'],\n ['tpt', 'application/vnd.trid.tpt'],\n ['tr', 'text/troff'],\n ['tra', 'application/vnd.trueapp'],\n ['trig', 'application/trig'],\n ['trm', 'application/x-msterminal'],\n ['ts', 'video/mp2t'],\n ['tsd', 'application/timestamped-data'],\n ['tsv', 'text/tab-separated-values'],\n ['ttc', 'font/collection'],\n ['ttf', 'font/ttf'],\n ['ttl', 'text/turtle'],\n ['ttml', 'application/ttml+xml'],\n ['twd', 'application/vnd.simtech-mindmapper'],\n ['twds', 'application/vnd.simtech-mindmapper'],\n ['txd', 'application/vnd.genomatix.tuxedo'],\n ['txf', 'application/vnd.mobius.txf'],\n ['txt', 'text/plain'],\n ['u8dsn', 'message/global-delivery-status'],\n ['u8hdr', 'message/global-headers'],\n ['u8mdn', 'message/global-disposition-notification'],\n ['u8msg', 'message/global'],\n ['u32', 'application/x-authorware-bin'],\n ['ubj', 'application/ubjson'],\n ['udeb', 'application/x-debian-package'],\n ['ufd', 'application/vnd.ufdl'],\n ['ufdl', 'application/vnd.ufdl'],\n ['ulx', 'application/x-glulx'],\n ['umj', 'application/vnd.umajin'],\n ['unityweb', 'application/vnd.unity'],\n ['uoml', 'application/vnd.uoml+xml'],\n ['uri', 'text/uri-list'],\n ['uris', 'text/uri-list'],\n ['urls', 'text/uri-list'],\n ['usdz', 'model/vnd.usdz+zip'],\n ['ustar', 'application/x-ustar'],\n ['utz', 'application/vnd.uiq.theme'],\n ['uu', 'text/x-uuencode'],\n ['uva', 'audio/vnd.dece.audio'],\n ['uvd', 'application/vnd.dece.data'],\n ['uvf', 'application/vnd.dece.data'],\n ['uvg', 'image/vnd.dece.graphic'],\n ['uvh', 'video/vnd.dece.hd'],\n ['uvi', 'image/vnd.dece.graphic'],\n ['uvm', 'video/vnd.dece.mobile'],\n ['uvp', 'video/vnd.dece.pd'],\n ['uvs', 'video/vnd.dece.sd'],\n ['uvt', 'application/vnd.dece.ttml+xml'],\n ['uvu', 'video/vnd.uvvu.mp4'],\n ['uvv', 'video/vnd.dece.video'],\n ['uvva', 'audio/vnd.dece.audio'],\n ['uvvd', 'application/vnd.dece.data'],\n ['uvvf', 'application/vnd.dece.data'],\n ['uvvg', 'image/vnd.dece.graphic'],\n ['uvvh', 'video/vnd.dece.hd'],\n ['uvvi', 'image/vnd.dece.graphic'],\n ['uvvm', 'video/vnd.dece.mobile'],\n ['uvvp', 'video/vnd.dece.pd'],\n ['uvvs', 'video/vnd.dece.sd'],\n ['uvvt', 'application/vnd.dece.ttml+xml'],\n ['uvvu', 'video/vnd.uvvu.mp4'],\n ['uvvv', 'video/vnd.dece.video'],\n ['uvvx', 'application/vnd.dece.unspecified'],\n ['uvvz', 'application/vnd.dece.zip'],\n ['uvx', 'application/vnd.dece.unspecified'],\n ['uvz', 'application/vnd.dece.zip'],\n ['vbox', 'application/x-virtualbox-vbox'],\n ['vbox-extpack', 'application/x-virtualbox-vbox-extpack'],\n ['vcard', 'text/vcard'],\n ['vcd', 'application/x-cdlink'],\n ['vcf', 'text/x-vcard'],\n ['vcg', 'application/vnd.groove-vcard'],\n ['vcs', 'text/x-vcalendar'],\n ['vcx', 'application/vnd.vcx'],\n ['vdi', 'application/x-virtualbox-vdi'],\n ['vds', 'model/vnd.sap.vds'],\n ['vhd', 'application/x-virtualbox-vhd'],\n ['vis', 'application/vnd.visionary'],\n ['viv', 'video/vnd.vivo'],\n ['vlc', 'application/videolan'],\n ['vmdk', 'application/x-virtualbox-vmdk'],\n ['vob', 'video/x-ms-vob'],\n ['vor', 'application/vnd.stardivision.writer'],\n ['vox', 'application/x-authorware-bin'],\n ['vrml', 'model/vrml'],\n ['vsd', 'application/vnd.visio'],\n ['vsf', 'application/vnd.vsf'],\n ['vss', 'application/vnd.visio'],\n ['vst', 'application/vnd.visio'],\n ['vsw', 'application/vnd.visio'],\n ['vtf', 'image/vnd.valve.source.texture'],\n ['vtt', 'text/vtt'],\n ['vtu', 'model/vnd.vtu'],\n ['vxml', 'application/voicexml+xml'],\n ['w3d', 'application/x-director'],\n ['wad', 'application/x-doom'],\n ['wadl', 'application/vnd.sun.wadl+xml'],\n ['war', 'application/java-archive'],\n ['wasm', 'application/wasm'],\n ['wav', 'audio/x-wav'],\n ['wax', 'audio/x-ms-wax'],\n ['wbmp', 'image/vnd.wap.wbmp'],\n ['wbs', 'application/vnd.criticaltools.wbs+xml'],\n ['wbxml', 'application/wbxml'],\n ['wcm', 'application/vnd.ms-works'],\n ['wdb', 'application/vnd.ms-works'],\n ['wdp', 'image/vnd.ms-photo'],\n ['weba', 'audio/webm'],\n ['webapp', 'application/x-web-app-manifest+json'],\n ['webm', 'video/webm'],\n ['webmanifest', 'application/manifest+json'],\n ['webp', 'image/webp'],\n ['wg', 'application/vnd.pmi.widget'],\n ['wgt', 'application/widget'],\n ['wks', 'application/vnd.ms-works'],\n ['wm', 'video/x-ms-wm'],\n ['wma', 'audio/x-ms-wma'],\n ['wmd', 'application/x-ms-wmd'],\n ['wmf', 'image/wmf'],\n ['wml', 'text/vnd.wap.wml'],\n ['wmlc', 'application/wmlc'],\n ['wmls', 'text/vnd.wap.wmlscript'],\n ['wmlsc', 'application/vnd.wap.wmlscriptc'],\n ['wmv', 'video/x-ms-wmv'],\n ['wmx', 'video/x-ms-wmx'],\n ['wmz', 'application/x-msmetafile'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['word', 'application/msword'],\n ['wpd', 'application/vnd.wordperfect'],\n ['wpl', 'application/vnd.ms-wpl'],\n ['wps', 'application/vnd.ms-works'],\n ['wqd', 'application/vnd.wqd'],\n ['wri', 'application/x-mswrite'],\n ['wrl', 'model/vrml'],\n ['wsc', 'message/vnd.wfa.wsc'],\n ['wsdl', 'application/wsdl+xml'],\n ['wspolicy', 'application/wspolicy+xml'],\n ['wtb', 'application/vnd.webturbo'],\n ['wvx', 'video/x-ms-wvx'],\n ['x3d', 'model/x3d+xml'],\n ['x3db', 'model/x3d+fastinfoset'],\n ['x3dbz', 'model/x3d+binary'],\n ['x3dv', 'model/x3d-vrml'],\n ['x3dvz', 'model/x3d+vrml'],\n ['x3dz', 'model/x3d+xml'],\n ['x32', 'application/x-authorware-bin'],\n ['x_b', 'model/vnd.parasolid.transmit.binary'],\n ['x_t', 'model/vnd.parasolid.transmit.text'],\n ['xaml', 'application/xaml+xml'],\n ['xap', 'application/x-silverlight-app'],\n ['xar', 'application/vnd.xara'],\n ['xav', 'application/xcap-att+xml'],\n ['xbap', 'application/x-ms-xbap'],\n ['xbd', 'application/vnd.fujixerox.docuworks.binder'],\n ['xbm', 'image/x-xbitmap'],\n ['xca', 'application/xcap-caps+xml'],\n ['xcs', 'application/calendar+xml'],\n ['xdf', 'application/xcap-diff+xml'],\n ['xdm', 'application/vnd.syncml.dm+xml'],\n ['xdp', 'application/vnd.adobe.xdp+xml'],\n ['xdssc', 'application/dssc+xml'],\n ['xdw', 'application/vnd.fujixerox.docuworks'],\n ['xel', 'application/xcap-el+xml'],\n ['xenc', 'application/xenc+xml'],\n ['xer', 'application/patch-ops-error+xml'],\n ['xfdf', 'application/vnd.adobe.xfdf'],\n ['xfdl', 'application/vnd.xfdl'],\n ['xht', 'application/xhtml+xml'],\n ['xhtml', 'application/xhtml+xml'],\n ['xhvml', 'application/xv+xml'],\n ['xif', 'image/vnd.xiff'],\n ['xl', 'application/excel'],\n ['xla', 'application/vnd.ms-excel'],\n ['xlam', 'application/vnd.ms-excel.addin.macroEnabled.12'],\n ['xlc', 'application/vnd.ms-excel'],\n ['xlf', 'application/xliff+xml'],\n ['xlm', 'application/vnd.ms-excel'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsb', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'],\n ['xlsm', 'application/vnd.ms-excel.sheet.macroEnabled.12'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xlt', 'application/vnd.ms-excel'],\n ['xltm', 'application/vnd.ms-excel.template.macroEnabled.12'],\n ['xltx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'],\n ['xlw', 'application/vnd.ms-excel'],\n ['xm', 'audio/xm'],\n ['xml', 'application/xml'],\n ['xns', 'application/xcap-ns+xml'],\n ['xo', 'application/vnd.olpc-sugar'],\n ['xop', 'application/xop+xml'],\n ['xpi', 'application/x-xpinstall'],\n ['xpl', 'application/xproc+xml'],\n ['xpm', 'image/x-xpixmap'],\n ['xpr', 'application/vnd.is-xpr'],\n ['xps', 'application/vnd.ms-xpsdocument'],\n ['xpw', 'application/vnd.intercon.formnet'],\n ['xpx', 'application/vnd.intercon.formnet'],\n ['xsd', 'application/xml'],\n ['xsl', 'application/xml'],\n ['xslt', 'application/xslt+xml'],\n ['xsm', 'application/vnd.syncml+xml'],\n ['xspf', 'application/xspf+xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['xvm', 'application/xv+xml'],\n ['xvml', 'application/xv+xml'],\n ['xwd', 'image/x-xwindowdump'],\n ['xyz', 'chemical/x-xyz'],\n ['xz', 'application/x-xz'],\n ['yaml', 'text/yaml'],\n ['yang', 'application/yang'],\n ['yin', 'application/yin+xml'],\n ['yml', 'text/yaml'],\n ['ymp', 'text/x-suse-ymp'],\n ['z', 'application/x-compress'],\n ['z1', 'application/x-zmachine'],\n ['z2', 'application/x-zmachine'],\n ['z3', 'application/x-zmachine'],\n ['z4', 'application/x-zmachine'],\n ['z5', 'application/x-zmachine'],\n ['z6', 'application/x-zmachine'],\n ['z7', 'application/x-zmachine'],\n ['z8', 'application/x-zmachine'],\n ['zaz', 'application/vnd.zzazz.deck+xml'],\n ['zip', 'application/zip'],\n ['zir', 'application/vnd.zul'],\n ['zirz', 'application/vnd.zul'],\n ['zmm', 'application/vnd.handheld-entertainment+xml'],\n ['zsh', 'text/x-scriptzsh']\n]);\nexport function toFileWithPath(file, path, h) {\n const f = withMimeType(file);\n const { webkitRelativePath } = file;\n const p = typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : `./${file.name}`;\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n setObjProp(f, 'path', p);\n }\n if (h !== undefined) {\n Object.defineProperty(f, 'handle', {\n value: h,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n // Always populate a relative path so that even electron apps have access to a relativePath value\n setObjProp(f, 'relativePath', p);\n return f;\n}\nfunction withMimeType(file) {\n const { name } = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n const ext = name.split('.')\n .pop().toLowerCase();\n const type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\nfunction setObjProp(f, key, value) {\n Object.defineProperty(f, key, {\n value,\n writable: false,\n configurable: false,\n enumerable: true\n });\n}\n//# sourceMappingURL=file.js.map","import { __awaiter } from \"tslib\";\nimport { toFileWithPath } from './file';\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function* () {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return getDataTransferFiles(evt.dataTransfer, evt.type);\n }\n else if (isChangeEvt(evt)) {\n return getInputFiles(evt);\n }\n else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n return getFsHandleFiles(evt);\n }\n return [];\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(file => toFileWithPath(file));\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function* () {\n const files = yield Promise.all(handles.map(h => h.getFile()));\n return files.map(file => toFileWithPath(file));\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function* () {\n // IE11 does not support dataTransfer.items\n // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n if (dt.items) {\n const items = fromList(dt.items)\n .filter(item => item.kind === 'file');\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return items;\n }\n const files = yield Promise.all(items.map(toFilePromises));\n return noIgnoredFiles(flatten(files));\n }\n return noIgnoredFiles(fromList(dt.files)\n .map(file => toFileWithPath(file)));\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n const files = [];\n // tslint:disable: prefer-for-of\n for (let i = 0; i < items.length; i++) {\n const file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n const entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item, entry);\n}\nfunction flatten(items) {\n return items.reduce((acc, files) => [\n ...acc,\n ...(Array.isArray(files) ? flatten(files) : [files])\n ], []);\n}\nfunction fromDataTransferItem(item, entry) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n // Check if we're in a secure context; due to a bug in Chrome (as far as we know)\n // the browser crashes when calling this API (yet to be confirmed as a consistent behaviour).\n //\n // See:\n // - https://issues.chromium.org/issues/40186242\n // - https://github.com/react-dropzone/react-dropzone/issues/1397\n if (globalThis.isSecureContext && typeof item.getAsFileSystemHandle === 'function') {\n const h = yield item.getAsFileSystemHandle();\n if (h === null) {\n throw new Error(`${item} is not a File`);\n }\n // It seems that the handle can be `undefined` (see https://github.com/react-dropzone/file-selector/issues/120),\n // so we check if it isn't; if it is, the code path continues to the next API (`getAsFile`).\n if (h !== undefined) {\n const file = yield h.getFile();\n file.handle = h;\n return toFileWithPath(file);\n }\n }\n const file = item.getAsFile();\n if (!file) {\n throw new Error(`${item} is not a File`);\n }\n const fwp = toFileWithPath(file, (_a = entry === null || entry === void 0 ? void 0 : entry.fullPath) !== null && _a !== void 0 ? _a : undefined);\n return fwp;\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function* () {\n return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n const reader = entry.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n function readEntries() {\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries((batch) => __awaiter(this, void 0, void 0, function* () {\n if (!batch.length) {\n // Done reading directory\n try {\n const files = yield Promise.all(entries);\n resolve(files);\n }\n catch (err) {\n reject(err);\n }\n }\n else {\n const items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n }\n }), (err) => {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n entry.file((file) => {\n const fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, (err) => {\n reject(err);\n });\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n\n if (acceptedFilesArray.length === 0) {\n return true;\n }\n\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport _accepts from \"attr-accept\";\nvar accepts = typeof _accepts === \"function\" ? _accepts : _accepts.default; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n};\n/**\n *\n * @param {string} accept\n */\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr() {\n var accept = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var acceptArr = accept.split(\",\");\n var msg = acceptArr.length > 1 ? \"one of \".concat(acceptArr.join(\", \")) : acceptArr[0];\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(msg)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n};\n/**\n * Check if the given file is a DataTransferItem with an empty type.\n *\n * During drag events, browsers may return DataTransferItem objects instead of File objects.\n * Some browsers (e.g., Chrome) return an empty MIME type for certain file types (like .md files)\n * on DataTransferItem during drag events, even though the type is correctly set during drop.\n *\n * This function detects such cases by checking for:\n * 1. Empty type string\n * 2. Presence of getAsFile method (indicates it's a DataTransferItem, not a File)\n *\n * We accept these during drag to provide proper UI feedback, while maintaining\n * strict validation during drop when real File objects are available.\n *\n * @param {File | DataTransferItem} file\n * @returns {boolean}\n */\n\nexport function isDataTransferItemWithEmptyType(file) {\n return file.type === \"\" && typeof file.getAsFile === \"function\";\n}\n/**\n * Check if file is accepted.\n *\n * Firefox versions prior to 53 return a bogus MIME type for every file drag,\n * so dragovers with that MIME type will always be accepted.\n *\n * Chrome/other browsers may return an empty MIME type for files during drag events,\n * so we accept those as well (we'll validate properly on drop).\n *\n * @param {File} file\n * @param {string} accept\n * @returns\n */\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept) || isDataTransferItemWithEmptyType(file);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || v === \"application/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index.js\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: false,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject True only during an active drag when some dragged files would be rejected. After drop, this resets to false. Use fileRejections for post-drop errors.\n * @param {boolean} params.isDragGlobal Files are being dragged anywhere on the document\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected. This persists after drop and is the source of truth for post-drop rejections.\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event|Array<FileSystemFileHandle>)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected. This is the authoritative source for post-drop file rejections.\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event|Array<FileSystemFileHandle>)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject True only during an active drag when some dragged files would be rejected. After drop, this resets to false. Use fileRejections for post-drop errors.\n * @property {boolean} isDragGlobal Files are being dragged anywhere on the document\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected. This persists after drop and is the source of truth for post-drop rejections.\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n isDragGlobal: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * The second parameter (fileRejections) is the authoritative list of rejected files after a drop.\n * Use this parameter or the fileRejections state property to handle post-drop file rejections,\n * as isDragReject only indicates rejection state during active drag operations.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject<HTMLElement>}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n var globalDragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Track global drag state for document-level drag events\n\n useEffect(function () {\n var onDocumentDragEnter = function onDocumentDragEnter(event) {\n globalDragTargetsRef.current = [].concat(_toConsumableArray(globalDragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n dispatch({\n isDragGlobal: true,\n type: \"setDragGlobal\"\n });\n }\n };\n\n var onDocumentDragLeave = function onDocumentDragLeave(event) {\n // Only deactivate once we've left all children\n globalDragTargetsRef.current = globalDragTargetsRef.current.filter(function (el) {\n return el !== event.target && el !== null;\n });\n\n if (globalDragTargetsRef.current.length > 0) {\n return;\n }\n\n dispatch({\n isDragGlobal: false,\n type: \"setDragGlobal\"\n });\n };\n\n var onDocumentDragEnd = function onDocumentDragEnd() {\n globalDragTargetsRef.current = [];\n dispatch({\n isDragGlobal: false,\n type: \"setDragGlobal\"\n });\n };\n\n var onDocumentDropGlobal = function onDocumentDropGlobal() {\n globalDragTargetsRef.current = [];\n dispatch({\n isDragGlobal: false,\n type: \"setDragGlobal\"\n });\n };\n\n document.addEventListener(\"dragenter\", onDocumentDragEnter, false);\n document.addEventListener(\"dragleave\", onDocumentDragLeave, false);\n document.addEventListener(\"dragend\", onDocumentDragEnd, false);\n document.addEventListener(\"drop\", onDocumentDropGlobal, false);\n return function () {\n document.removeEventListener(\"dragenter\", onDocumentDragEnter);\n document.removeEventListener(\"dragleave\", onDocumentDragLeave);\n document.removeEventListener(\"dragend\", onDocumentDragEnd);\n document.removeEventListener(\"drop\", onDocumentDropGlobal);\n };\n }, [rootRef]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n border: 0,\n clip: \"rect(0, 0, 0, 0)\",\n clipPath: \"inset(50%)\",\n height: \"1px\",\n margin: \"0 -1px -1px 0\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections,\n isDragReject: false\n });\n\n case \"setDragGlobal\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragGlobal: action.isDragGlobal\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils/index.js\";","import CloseIcon from '@mui/icons-material/Close';\nimport SearchIcon from '@mui/icons-material/Search';\nimport Dialog from '@mui/material/Dialog';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport List from '@mui/material/List';\nimport Box from '@mui/material/Box';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport Typography from '@mui/material/Typography';\nimport React, { useEffect, useRef, useState } from 'react';\nimport Loading from './Loading.js';\nimport InputField from './InputField.js';\n\nfunction Search({\n propertyName,\n label,\n value = null,\n handleValueChange,\n disabled = false,\n search,\n searchResults = [],\n loading = false,\n priorityFunction = null,\n onResultSelect,\n resultLimit = null,\n resultsInModal = false,\n showResultsList = true,\n clearSearch,\n searchOnEnter = true,\n onKeyPressFunctions = [],\n helperText = 'PRESS ENTER TO SEARCH',\n autoFocus = true,\n visible = true,\n displayChips = false,\n fullWidth = false,\n handleOnBlur = null\n}) {\n const [dialogOpen, setDialogOpen] = useState(false);\n const [hasSearched, setHasSearched] = useState(false);\n const [resultsHidden, setResultsHidden] = useState(false);\n const listRef = useRef(null);\n\n const focusInput = () => {\n setTimeout(() => {\n document.getElementById(propertyName)?.focus();\n }, 0);\n };\n\n const focusResultAt = index => {\n const items = listRef.current?.querySelectorAll('[data-search-result]');\n if (items?.length) {\n items[Math.max(0, Math.min(index, items.length - 1))].focus();\n }\n };\n\n // When the results modal opens (and results are ready), move focus straight\n // onto the first result so it can be navigated and selected by keyboard.\n useEffect(() => {\n if (resultsInModal && dialogOpen && !loading) {\n const timer = setTimeout(() => focusResultAt(0), 0);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [resultsInModal, dialogOpen, loading]);\n\n const hideResults = () => {\n if (resultsInModal) {\n setDialogOpen(false);\n } else {\n setResultsHidden(true);\n }\n focusInput();\n };\n\n const handleQueryChange = (name, newValue) => {\n // Starting a new query should bring back a list the user dismissed with\n // Escape. This covers searchOnEnter={false}, where there is no Enter\n // press to reset the hidden state.\n setResultsHidden(false);\n handleValueChange(name, newValue);\n };\n\n const handleListKeyDown = event => {\n // The handler sits on both the results List and (for the modal) the\n // Dialog. Stop propagation once handled so a keypress originating on a\n // result isn't processed again as it bubbles up, which would skip items.\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n hideResults();\n return;\n }\n const items = listRef.current?.querySelectorAll('[data-search-result]');\n if (!items?.length) {\n return;\n }\n const currentIndex = Array.from(items).indexOf(document.activeElement);\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n event.stopPropagation();\n focusResultAt(currentIndex + 1);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n if (currentIndex <= 0) {\n // In the modal the input sits outside the dialog's focus trap,\n // so returning focus to it is unreliable — keep focus on the\n // first result. Inline, hop back up to the input.\n if (resultsInModal) {\n focusResultAt(0);\n } else {\n focusInput();\n }\n } else {\n focusResultAt(currentIndex - 1);\n }\n }\n };\n\n const countMatchingCharacters = (item, searchTerm) => {\n let count = 0;\n if (searchTerm) {\n for (let i = 0; i < searchTerm.length; i += 1) {\n if (item.name.toUpperCase()[i] === searchTerm.toUpperCase()[i]) {\n count += 1;\n }\n }\n }\n return count;\n };\n\n const selectResult = item => {\n clearSearch();\n if (resultsInModal) {\n setDialogOpen(false);\n }\n onResultSelect(item);\n setHasSearched(false);\n focusInput();\n };\n\n const resultItem = item => (\n <ListItemButton\n data-search-result\n tabIndex={-1}\n sx={{ padding: theme => theme.spacing(2) }}\n onClick={() => selectResult(item)}\n >\n <Stack spacing={3} direction=\"row\">\n <Typography\n data-testid=\"result\"\n sx={{ fontWeight: theme => theme.typography.fontWeightBold }}\n >\n {item.name}\n </Typography>\n <Typography sx={{ color: theme => theme.palette.text.primary }}>\n {item.description}\n </Typography>\n {displayChips && (\n <Stack\n direction=\"row\"\n justifyContent=\"flex-start\"\n alignItems=\"flex-start\"\n spacing={1}\n divider={<Divider orientation=\"vertical\" flexItem />}\n >\n {item.chips?.map(c => (\n <Chip\n id={c.text}\n key={c.text}\n label={c.text}\n sx={{ backgroundColor: c.color }}\n />\n ))}\n </Stack>\n )}\n </Stack>\n </ListItemButton>\n );\n\n const priority = (item, searchTerm) => {\n if (priorityFunction === 'closestMatchesFirst') {\n return countMatchingCharacters(item, searchTerm);\n }\n return priorityFunction(item, searchTerm);\n };\n\n const results = () => {\n if (loading) {\n return <Loading />;\n }\n\n let result = searchResults;\n\n if (priorityFunction) {\n result = result\n .map(i => ({\n ...i,\n priority: priority(i, value)\n }))\n .sort((a, b) => b.priority - a.priority);\n }\n\n if (resultLimit) {\n result = result.slice(0, resultLimit);\n }\n\n if (result?.length > 0 || !hasSearched) {\n return (\n <List dense ref={listRef} onKeyDown={handleListKeyDown}>\n {result.map(r => (\n <Box key={r.id}>\n {resultItem(r)}\n <Divider component=\"li\" />\n </Box>\n ))}\n </List>\n );\n }\n return <Typography>No matching items</Typography>;\n };\n\n return (\n <>\n <InputField\n visible={visible}\n value={value}\n propertyName={propertyName}\n label={label}\n autoFocus={autoFocus}\n adornment={<SearchIcon />}\n onChange={handleQueryChange}\n helperText={helperText}\n fullWidth={fullWidth}\n textFieldProps={{\n disabled,\n onKeyDown: data => {\n if (searchOnEnter && data.keyCode === 13) {\n if (resultsInModal && showResultsList) {\n setDialogOpen(true);\n }\n setResultsHidden(false);\n search(value);\n setHasSearched(true);\n } else if (data.key === 'Escape') {\n hideResults();\n } else if (data.key === 'ArrowDown' && showResultsList) {\n data.preventDefault();\n focusResultAt(0);\n }\n onKeyPressFunctions.forEach(element => {\n if (data.keyCode === element.keyCode) {\n element.action();\n }\n });\n },\n onBlur: handleOnBlur ? handleOnBlur : null\n }}\n />\n {showResultsList &&\n (resultsInModal ? (\n <Dialog\n data-testid=\"modal\"\n open={dialogOpen}\n onKeyDown={handleListKeyDown}\n fullWidth\n maxWidth=\"md\"\n >\n <Box>\n <IconButton\n sx={{\n float: 'right'\n }}\n aria-label=\"Close\"\n onClick={() => setDialogOpen(false)}\n size=\"large\"\n >\n <CloseIcon />\n </IconButton>\n <Box\n sx={{\n margin: theme => theme.spacing(6),\n minWidth: theme => theme.spacing(62)\n }}\n >\n {loading ? <Loading /> : results()}\n </Box>\n </Box>\n </Dialog>\n ) : (\n !resultsHidden && results()\n ))}\n </>\n );\n}\n\nexport default Search;\n","import React from 'react';\nimport { DataGrid, gridClasses } from '@mui/x-data-grid';\nimport Grid from '@mui/material/Grid';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { Link } from 'react-router-dom';\n\nfunction ReportDataGrid({\n report,\n renderZeroes = false,\n titleVariant = 'h6',\n showHeader = true,\n showExport = false,\n showTotals = false,\n openLinksInNewTabs = true,\n fixedRowHeight = false,\n showRowCount = false\n}) {\n // Rendering cell with drill-down functionality\n const renderCell = params => {\n const hasDrillDown = params.row[`${params.field}DrillDown`]?.url;\n if (hasDrillDown) {\n if (params.row[`${params.field}DrillDown`].external) {\n return (\n <a\n target={openLinksInNewTabs ? '_blank' : ''}\n rel={openLinksInNewTabs ? 'noopener noreferrer' : ''}\n href={params.row[`${params.field}DrillDown`].url}\n >\n {params.formattedValue}\n </a>\n );\n }\n return (\n <Link\n target={openLinksInNewTabs ? '_blank' : ''}\n rel={openLinksInNewTabs ? 'noopener noreferrer' : ''}\n to={params.row[`${params.field}DrillDown`].url}\n >\n {params.formattedValue}\n </Link>\n );\n }\n\n if (fixedRowHeight) {\n return (\n <Tooltip title={params.formattedValue}>\n <span>{params.formattedValue}</span>\n </Tooltip>\n );\n }\n\n return <span>{params.formattedValue}</span>;\n };\n\n // Define columns dynamically from the report data\n const columns = report.headers.dataGridColumnSpecifications.map((c, i) => ({\n field: c.columnId,\n headerName: report.headers.columnHeaders[i],\n align: report.headers.dataGridColumnSpecifications[i].align,\n headerAlign: report.headers.dataGridColumnSpecifications[i].align,\n width: report.headers.dataGridColumnSpecifications[i].columnWidth,\n cellClassName: report.headers.totalColumns?.includes(i) ? 'totalColumn' : '',\n valueFormatter: value => {\n if (\n report.headers.dataGridColumnSpecifications[i].columnType === 'number' &&\n (value || value === 0 || value === '0')\n ) {\n const { decimalPlaces } = report.headers.dataGridColumnSpecifications[i];\n const numberFormat = Intl.NumberFormat('en-GB', {\n minimumFractionDigits: decimalPlaces ?? 2,\n maximumFractionDigits: decimalPlaces ?? 99\n });\n\n return numberFormat.format(value);\n }\n\n return value;\n },\n renderCell\n }));\n\n // Map rows from the report data\n let rows = report.results.map(r => {\n const values = columns.reduce((acc, col, i) => {\n let val = r.values[i]?.textDisplayValue ?? r.values[i]?.displayValue;\n if ((val === 0 || val === '0') && !renderZeroes) {\n val = '';\n }\n\n acc[col.field] = val;\n\n const drillDowns = r.values[i]?.drillDowns;\n const hasDrilldown = drillDowns?.length;\n if (hasDrilldown) {\n acc[`${col.field}DrillDown`] = {\n url: drillDowns[0].href,\n external: drillDowns[0].externalLink\n };\n }\n\n const attributes = r.values[i]?.attributes;\n const hasAttributes = attributes?.length;\n if (hasAttributes) {\n acc[`${col.field}Attributes`] = attributes;\n }\n\n return acc;\n }, {});\n return { id: r.rowTitle.displayString, rowType: r.rowType, ...values };\n });\n\n // Configure slots based on props\n let slots = {};\n if (!showHeader) {\n slots = {\n columnHeaders: () => null\n };\n }\n\n // Add totals row if required\n if (showTotals) {\n const { totals, headers } = report;\n const totalsValues = headers.dataGridColumnSpecifications.reduce((acc, spec, i) => {\n let totalVal = totals.values[i]?.displayValue;\n\n if ((totalVal === 0 || totalVal === '0') && !renderZeroes) {\n totalVal = '';\n }\n\n acc[spec.columnId] = totalVal;\n\n return acc;\n }, {});\n rows = [...rows, { id: 'ReportDataGridTotalsRow', ...totalsValues }];\n }\n\n // Define row class based on row id\n const getRowClass = params => {\n if (params.id === 'ReportDataGridTotalsRow') {\n return 'totalLine'; // This will be handled by sx\n }\n\n if (params.row.rowType === 'Subtotal' || params.row.rowType === 'Total') {\n return 'totalLine';\n }\n\n return null;\n };\n\n // Define title element\n const titleHasDrilldowns = report.title?.drillDowns?.length;\n const title = () => (\n <Typography variant={titleVariant}>{report.title.displayString}</Typography>\n );\n\n const colourStyles = {};\n rows.forEach(row => {\n columns.forEach(col => {\n const attributes = row[`${col.field}Attributes`];\n if (attributes) {\n attributes.forEach(attribute => {\n if (attribute.attributeType === 'background-colour') {\n const className = `cell-bg-${attribute.attributeValue.replace('#', '')}`;\n colourStyles[`.${className}`] = {\n backgroundColor: attribute.attributeValue\n };\n }\n });\n attributes.forEach(attribute => {\n if (attribute.attributeType === 'text-colour') {\n const className = `cell-tc-${attribute.attributeValue.replace('#', '')}`;\n colourStyles[`.${className}`] = {\n color: attribute.attributeValue\n };\n }\n });\n }\n });\n });\n\n // Fixed height style condition\n const fullPages = rows?.length >= 100;\n const fixedHeightStyle = { height: '100vh' };\n\n return (\n <Grid container spacing={3}>\n <Grid size={12} sx={{ marginBottom: '-10px' }}>\n {titleHasDrilldowns ? (\n <a\n target={openLinksInNewTabs ? '_blank' : ''}\n rel={openLinksInNewTabs ? 'noopener noreferrer' : ''}\n href={report.title.drillDowns[0].href}\n >\n {title()}\n </a>\n ) : (\n title()\n )}\n </Grid>\n <Grid size={12} sx={fullPages ? fixedHeightStyle : {}}>\n <DataGrid\n rows={rows}\n columns={columns}\n slots={slots}\n showToolbar={showExport}\n density=\"compact\"\n getRowHeight={() => (fixedRowHeight ? 30 : 'auto')}\n disableRowSelectionOnClick\n getRowClassName={getRowClass}\n hideFooter={rows.length <= 100}\n getCellClassName={params => {\n const attributes = params.row[`${params.field}Attributes`];\n if (attributes) {\n let classes = '';\n for (const attribute of attributes) {\n if (attribute.attributeType === 'text-colour') {\n classes += `cell-tc-${attribute.attributeValue.replace('#', '')} `;\n }\n if (attribute.attributeType === 'background-colour') {\n classes += `cell-bg-${attribute.attributeValue.replace('#', '')} `;\n }\n }\n\n return classes.trim();\n }\n\n return '';\n }}\n sx={{\n [`& .${gridClasses.cell}`]: {\n py: 1,\n whiteSpace: fixedRowHeight ? '' : 'normal !important',\n wordWrap: fixedRowHeight ? '' : 'break-word !important',\n wordBreak: fixedRowHeight ? '' : 'break-word !important',\n lineHeight: fixedRowHeight ? 1 : '1.5 !important'\n },\n [`& .${gridClasses.row}`]: {\n maxHeight: 'none !important'\n },\n '.totalLine': {\n fontWeight: 'bolder'\n },\n '.totalColumn': {\n fontWeight: 'bold'\n },\n ...colourStyles\n }}\n />\n </Grid>\n {showRowCount && report && report.results && (\n <Grid size={12} sx={{ mt: -1.25 }}>\n <Typography\n variant=\"body2\"\n sx={{\n float: 'left',\n pl: 2\n }}\n >\n Number of rows: {report.results.length}\n </Typography>\n </Grid>\n )}\n </Grid>\n );\n}\n\nexport default ReportDataGrid;\n","import React from 'react';\nimport InputLabel from '@mui/material/InputLabel';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Tooltip from '@mui/material/Tooltip';\nimport LinkIcon from '@mui/icons-material/Link';\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\n\nconst LinkValue = React.forwardRef(function LinkValue(\n {\n value,\n disabled,\n external,\n to,\n openLinksInNewTabs,\n label,\n toolTip,\n className,\n id,\n onFocus,\n onBlur\n },\n ref\n) {\n const sx = { display: 'block', font: 'inherit', lineHeight: 'inherit' };\n\n if (disabled) {\n return (\n <Typography ref={ref} component=\"span\" className={className} id={id} sx={sx}>\n {value}\n </Typography>\n );\n }\n\n const Icon = openLinksInNewTabs ? OpenInNewIcon : LinkIcon;\n\n return (\n <Tooltip\n title={toolTip ?? `Open ${label || 'link'}${openLinksInNewTabs ? ' in a new tab' : ''}`}\n describeChild\n >\n <Link\n ref={ref}\n className={className}\n id={id}\n onFocus={onFocus}\n onBlur={onBlur}\n target={openLinksInNewTabs ? '_blank' : ''}\n rel={openLinksInNewTabs ? 'noopener noreferrer' : ''}\n variant=\"body1\"\n underline=\"none\"\n color=\"inherit\"\n sx={{ ...sx, position: 'relative', cursor: 'pointer' }}\n {...(external ? { href: to } : { component: RouterLink, to })}\n >\n {value}\n <Icon\n sx={{\n position: 'absolute',\n right: 14,\n top: '50%',\n transform: 'translateY(-50%)',\n fontSize: 18,\n color: 'action.active',\n pointerEvents: 'none'\n }}\n />\n </Link>\n </Tooltip>\n );\n});\n\nfunction LinkField({\n value = '',\n openLinksInNewTabs = false,\n to,\n external = true,\n disabled = false,\n label = '',\n toolTip = null,\n shouldRender = true\n}) {\n if (!shouldRender) {\n return '';\n }\n\n return (\n <>\n {label && (\n <InputLabel\n sx={{\n fontSize: theme => theme.typography.fontSize,\n color: 'inherit'\n }}\n >\n {label}\n </InputLabel>\n )}\n <OutlinedInput\n sx={{\n paddingTop: 0,\n color: 'text.disabled',\n marginTop: theme => theme.spacing(1),\n '& .MuiInputBase-input': {\n paddingRight: disabled ? undefined : 5\n },\n '&:not(.Mui-disabled):hover .MuiOutlinedInput-notchedOutline': {\n borderColor: 'primary.main',\n borderWidth: 2\n },\n '&:not(.Mui-disabled):focus-within .MuiOutlinedInput-notchedOutline': {\n borderColor: 'primary.main',\n borderWidth: 2\n }\n }}\n fullWidth\n size=\"small\"\n margin=\"dense\"\n disabled={disabled}\n readOnly\n value={value ?? ''}\n inputComponent={LinkValue}\n slotProps={{ input: { external, to, openLinksInNewTabs, label, toolTip } }}\n />\n </>\n );\n}\n\nexport default LinkField;\n","import { useCallback, useState } from 'react';\nimport { useAuth } from 'react-oidc-context';\n\nfunction useGet(url, requiresAuth = false) {\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n const [result, setResult] = useState(null);\n\n const auth = useAuth();\n\n const clearData = () => setResult(null);\n\n const send = useCallback(\n async (id, queryString) => {\n setIsLoading(true);\n setResult(null);\n setErrorMessage(null);\n\n let token = requiresAuth ? auth.user?.access_token : ''; // Moved inside useCallback\n\n const headers = {\n accept: 'application/json'\n };\n const requestParameters = {\n method: 'GET',\n headers: requiresAuth ? { ...headers, Authorization: `Bearer ${token}` } : headers\n };\n\n try {\n const response = await fetch(\n id ? `${url}/${id}${queryString ?? ''}` : `${url}${queryString ?? ''}`,\n requestParameters\n );\n\n if (response.ok) {\n setResult(await response.json());\n } else {\n setErrorMessage(await response.text());\n }\n } catch (error) {\n setErrorMessage(error.message);\n } finally {\n setIsLoading(false);\n }\n },\n [requiresAuth, auth.user?.access_token, url]\n );\n\n return { send, isLoading, errorMessage, result, clearData };\n}\n\nexport default useGet;\n","import React, { useRef, useState } from 'react';\nimport { gridExpandedSortedRowIdsSelector, useGridApiRef, GridSearchIcon } from '@mui/x-data-grid';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport Search from '../components/Search.js';\n\n// Shared in-grid-search mechanics for a NORMAL MUI DataGrid, distilled from the hand-rolled copies in\n// PurchaseLedgerSplitDebitCredit / CashbookTransaction (finance) and SalesOrder (sales). You keep your\n// own <DataGrid> and spread these onto it:\n//\n// const search = useEditableSearchGrid({ rows, setRows, columns, onRowChange, groupValidations });\n// <DataGrid\n// apiRef={search.apiRef}\n// columns={search.columns}\n// onCellKeyDown={search.handleCellKeyDown}\n// processRowUpdate={search.processRowUpdate}\n// sx={search.gridSx}\n// ... any other DataGrid prop ...\n// />\n// {search.searchDialogs}\n//\n// It makes NO API calls and uses NO redux — the consumer fetches (useGet), holds `rows`, does the\n// code lookups in `onRowChange`, and supplies each search column's `searchResults`.\n//\n// A `type:'search'` column is an editable text cell with two ways to fill it:\n// - type a code you know and press Tab -> the edit commits in one press (processRowUpdate pads it and\n// fires onRowChange) and focus advances; the consumer's onRowChange does the direct lookup.\n// - press Enter (or click the cell's search icon) -> a modal <Search> opens, pre-seeded with what you\n// typed, to find the value by description.\n//\n// `groupValidations` colours cells: when a group's isValid(row) is false, every field in it gets the\n// invalid class (yellow by default — see `gridSx`).\n\nconst DEFAULT_INVALID_CLASS = 'invalidCode';\n\nconst padCode = (value, width) => {\n if (!width || value == null) {\n return value;\n }\n\n const text = `${value}`;\n return text.length && text.length < width ? text.padStart(width, '0') : value;\n};\n\nfunction useEditableSearchGrid({\n rows = [],\n setRows,\n columns = [],\n getRowId = row => row.id,\n onRowChange,\n groupValidations = []\n}) {\n const apiRef = useGridApiRef();\n const [searchDialog, setSearchDialog] = useState({ forRow: null, forColumn: null });\n const [searchTerm, setSearchTerm] = useState('');\n // The cell to refocus once the search dialog has fully closed (set when a result is picked).\n const pendingFocusRef = useRef(null);\n\n const searchColumns = columns.filter(c => c.type === 'search');\n\n const closeDialog = () => setSearchDialog({ forRow: null, forColumn: null });\n\n // The invalid class for a field, if any group validation covering it is currently failing.\n const invalidClassForField = (field, row) => {\n const failing = groupValidations.find(\n g =>\n g.fields.includes(field) &&\n typeof g.isValid === 'function' &&\n g.isValid(row) === false\n );\n return failing ? (failing.invalidClassName ?? DEFAULT_INVALID_CLASS) : '';\n };\n\n const searchRenderCell = params => (\n // flex + full height so the icon and the value are vertically centred together; a bare\n // fragment lets the value fall to its baseline against the taller icon and sit low in the cell.\n <span style={{ display: 'flex', alignItems: 'center', height: '100%' }}>\n <GridSearchIcon\n style={{ cursor: 'pointer', marginRight: 4, flexShrink: 0 }}\n onClick={() => {\n setSearchTerm(`${params.value ?? ''}`);\n setSearchDialog({ forRow: params.id, forColumn: params.field });\n }}\n />\n {params.value}\n </span>\n );\n\n // Decorate each column: search columns get the icon renderer; every column's cellClassName merges\n // the caller's own class with the group-validation (invalid) class.\n const decoratedColumns = columns.map(c => {\n const withRenderer =\n c.type === 'search'\n ? {\n ...c,\n editable: c.editable ?? true,\n renderCell: c.renderCell ?? searchRenderCell\n }\n : c;\n\n return {\n ...withRenderer,\n cellClassName: params => {\n const own =\n typeof c.cellClassName === 'function'\n ? c.cellClassName(params)\n : (c.cellClassName ?? '');\n return [own, invalidClassForField(c.field, params.row)].filter(Boolean).join(' ');\n }\n };\n });\n\n const handleCellKeyDown = (params, event) => {\n // Enter on a search cell opens the dialog, pre-seeded with whatever has been typed.\n if (event.keyCode === 13 && params.colDef.type === 'search') {\n const inputEl = apiRef.current\n .getCellElement(params.id, params.field)\n ?.querySelector('input');\n setSearchTerm(`${inputEl?.value ?? params.value ?? ''}`);\n setSearchDialog({ forRow: params.id, forColumn: params.field });\n // onCellKeyDown fires before MUI enters edit mode, so a freshly focused (view-mode) cell is\n // not editing yet - stopCellEditMode throws if called on a non-editing cell. Guard it like\n // the Tab branch does.\n if (apiRef.current.getCellMode(params.id, params.field) === 'edit') {\n apiRef.current.stopCellEditMode({\n id: params.id,\n field: params.field,\n ignoreModifications: true\n });\n }\n // defaultMuiPrevented (NOT preventDefault) is what stops the grid's own Enter handler from\n // starting edit mode on this cell behind the dialog. Without it MUI opens an empty editor\n // underneath; selecting a result writes the code to the row, but committing that stale empty\n // editor on the next Tab wipes the code back out (the \"name filled, code blank\" bug).\n event.defaultMuiPrevented = true;\n event.preventDefault();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n // Forms-style Tab traversal (from SalesOrder): move to the next/previous cell, wrapping rows.\n const rowIds = gridExpandedSortedRowIdsSelector(apiRef.current.state);\n const visibleColumns = apiRef.current.getVisibleColumns();\n const current = {\n rowIndex: rowIds.findIndex(id => id === params.id),\n colIndex: apiRef.current.getColumnIndex(params.field)\n };\n\n const atLastCell =\n current.colIndex === visibleColumns.length - 1 &&\n current.rowIndex === rowIds.length - 1 &&\n !event.shiftKey;\n const atFirstCell = current.colIndex === 0 && current.rowIndex === 0 && event.shiftKey;\n if (atLastCell || atFirstCell) {\n return;\n }\n\n event.preventDefault();\n\n const next = { ...current };\n if (!event.shiftKey) {\n if (next.colIndex < visibleColumns.length - 1) {\n next.colIndex += 1;\n } else {\n next.rowIndex += 1;\n next.colIndex = 0;\n }\n } else if (next.colIndex > 0) {\n next.colIndex -= 1;\n } else {\n next.rowIndex -= 1;\n next.colIndex = visibleColumns.length - 1;\n }\n\n // Commit the edit before leaving (this is what makes type-a-code-then-Tab work in one press,\n // rather than needing an extra Enter first).\n if (apiRef.current.getCellMode(params.id, params.field) === 'edit') {\n apiRef.current.stopCellEditMode({ id: params.id, field: params.field });\n }\n\n apiRef.current.scrollToIndexes(next);\n apiRef.current.setCellFocus(rowIds[next.rowIndex], visibleColumns[next.colIndex].field);\n };\n\n // Pad every search column's code to its declared width. Exposed so a consumer that needs its own\n // processRowUpdate (extra per-row logic) can still reuse the padding.\n const padSearchCodes = row => {\n const updated = { ...row };\n searchColumns.forEach(c => {\n updated[c.field] = padCode(updated[c.field], c.pad);\n });\n return updated;\n };\n\n const processRowUpdate = (newRow, oldRow) => {\n let changedField;\n const updated = { ...newRow };\n\n searchColumns.forEach(c => {\n if (updated[c.field] !== oldRow?.[c.field]) {\n changedField = c.field;\n updated[c.field] = padCode(updated[c.field], c.pad);\n }\n });\n\n setRows(current => current.map(r => (getRowId(r) === getRowId(updated) ? updated : r)));\n onRowChange?.(updated, oldRow, changedField);\n return updated;\n };\n\n const writeResultToRow = (column, selected) => {\n const rowId = searchDialog.forRow;\n const currentRow = rows.find(r => getRowId(r) === rowId);\n const code = selected[column.resultIdField ?? 'id'] ?? selected.id;\n let updated = { ...currentRow, [column.field]: padCode(code, column.pad) };\n column.updateFields?.forEach(f => {\n updated = { ...updated, [f.field]: selected[f.from] };\n });\n\n setRows(current => current.map(r => (getRowId(r) === rowId ? updated : r)));\n onRowChange?.(updated, currentRow, column.field);\n\n // Refocus the originating cell once the dialog has fully closed (handled in the dialog's\n // transition onExited), so Tab carries on to the next cell in the row instead of the page\n // dropping focus to the top. Restoring on exit rather than now avoids racing the dialog's own\n // focus handling.\n pendingFocusRef.current = { rowId, field: column.field };\n closeDialog();\n };\n\n const searchDialogs = (\n <>\n {searchColumns.map(c => (\n <Dialog\n key={c.field}\n open={searchDialog.forColumn === c.field}\n onClose={closeDialog}\n slotProps={{\n // The transition's onExited fires after the dialog has fully closed (and after\n // MUI has done its own focus restoration), so this is the point to put focus back\n // on the grid cell - Tab then carries on to the next cell in the row instead of\n // the page dropping focus to the top. NB: in MUI v6+ this lives under\n // slotProps.transition; the old top-level TransitionProps is ignored.\n transition: {\n onExited: () => {\n const pending = pendingFocusRef.current;\n pendingFocusRef.current = null;\n const api = apiRef.current;\n if (!pending || !api) {\n return;\n }\n // Sync the grid's own focus/roving-tabindex state...\n api.setCellFocus(pending.rowId, pending.field);\n // ...but setCellFocus refuses to move DOM focus while the active element\n // is still inside a portal (MUI guards against stealing focus from a\n // dialog), and our two closing modals leave focus astray - so move DOM\n // focus onto the cell element directly too. Tab then resumes from the cell.\n // Repeat on the next frame in case a closing modal reclaims focus just\n // after onExited.\n const focusCell = () =>\n api.getCellElement(pending.rowId, pending.field)?.focus();\n focusCell();\n requestAnimationFrame(focusCell);\n }\n }\n }}\n >\n <DialogTitle>Search {c.headerName}</DialogTitle>\n <DialogContent>\n <Search\n autoFocus\n resultsInModal\n resultLimit={100}\n propertyName={`${c.field}-search`}\n label={c.headerName}\n value={searchTerm}\n handleValueChange={(_, newValue) => setSearchTerm(newValue)}\n search={c.search}\n searchResults={c.searchResults?.map(r => {\n // Search ranks/renders via item.name (name.toUpperCase()), so a result\n // that only carries a code (e.g. { departmentCode, description }) must\n // still get a string name or ranking a non-empty search throws.\n const id = r[c.resultIdField ?? c.field] ?? r.id;\n return { ...r, id, name: r.name ?? `${id ?? ''}` };\n })}\n loading={c.searchLoading}\n priorityFunction=\"closestMatchesFirst\"\n onResultSelect={selected => writeResultToRow(c, selected)}\n clearSearch={() => setSearchTerm('')}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={closeDialog}>Close</Button>\n </DialogActions>\n </Dialog>\n ))}\n </>\n );\n\n // Spread onto the DataGrid's own sx so the default invalid class renders yellow.\n const gridSx = {\n [`& .${DEFAULT_INVALID_CLASS}`]: { color: 'black', backgroundColor: 'yellow' }\n };\n\n return {\n apiRef,\n columns: decoratedColumns,\n handleCellKeyDown,\n processRowUpdate,\n padSearchCodes,\n searchDialogs,\n gridSx\n };\n}\n\nexport default useEditableSearchGrid;\n","import React, { useState } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport Close from '@mui/icons-material/Close';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport SaveBackCancelButtons from './SaveBackCancelButtons.js';\nimport InputField from './InputField.js';\nimport Loading from './Loading.js';\nimport Search from './Search.js';\n\nfunction AddressUtility({\n createAddress,\n createAddressLoading = false,\n selectAddress,\n searchCountries,\n searchAddresses,\n countriesSearchResults = [],\n countriesSearchLoading = false,\n addressSearchResults = [],\n addressSearchLoading = false,\n clearAddressesSearch = () => {},\n clearCountriesSearch = () => {},\n defaultAddressee = false,\n isActive,\n setIsActive\n}) {\n const [address, setAddress] = useState({ addressee: defaultAddressee });\n const [addressSearchTerm, setAddressSearchTerm] = useState('');\n const [countrySearchTerm, setCountrySearchTerm] = useState('');\n\n const handleFieldChange = (propertyName, newValue) => {\n setAddress(a => ({ ...a, [propertyName]: newValue }));\n };\n\n const close = () => {\n setIsActive(false);\n };\n\n const open = () => {\n setIsActive(true);\n };\n\n const chips = a => {\n const result = [{ text: a.addressId }, { text: a.addressee }, { text: a.line1 }];\n if (a.postCode) {\n result.push({ text: a.postCode });\n }\n if (a.countryCode) {\n result.push({ text: a.countryCode });\n }\n return result;\n };\n\n return (\n <>\n <Grid container>\n <Grid size={12}>\n <Button variant=\"outlined\" onClick={open}>\n Create Or Look Up Address\n </Button>\n </Grid>\n </Grid>\n <Dialog open={isActive} maxWidth=\"md\">\n <Box\n sx={{\n position: 'relative',\n margin: 6,\n minWidth: 62\n }}\n >\n <IconButton\n sx={{\n position: 'absolute',\n top: 8,\n right: 8\n }}\n aria-label=\"Close\"\n onClick={close}\n >\n <Close />\n </IconButton>\n <Grid container spacing={3}>\n <Grid size={12}>\n <Typography variant=\"h6\">Create or Look Up Address</Typography>\n </Grid>\n <Grid size={12}>\n <Search\n propertyName=\"salesAccount\"\n label=\"Look up an address\"\n value={addressSearchTerm}\n handleValueChange={(_, newVal) => setAddressSearchTerm(newVal)}\n search={searchAddresses}\n searchResults={addressSearchResults.map(a => ({\n ...a,\n chips: chips(a)\n }))}\n loading={addressSearchLoading}\n displayChips\n resultsInModal\n onResultSelect={x => {\n selectAddress(x);\n close();\n }}\n clearSearch={clearAddressesSearch}\n />\n </Grid>\n <Grid size={12}>\n <Typography variant=\"subtitle1\">\n Or Enter details and click save to create a new address\n </Typography>\n </Grid>\n {createAddressLoading ? (\n <Loading />\n ) : (\n <>\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.addressee}\n label=\"Addressee\"\n propertyName=\"addressee\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.addressee2}\n label=\"Addressee 2\"\n propertyName=\"addressee2\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.line1}\n label=\"Line 1\"\n propertyName=\"line1\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.line2}\n label=\"Line 2\"\n propertyName=\"line2\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.line3}\n label=\"Line 3\"\n propertyName=\"line3\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.line4}\n label=\"Line 4\"\n propertyName=\"line4\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.postCode}\n label=\"Postcode\"\n propertyName=\"postCode\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={4}>\n <Search\n propertyName=\"countryCode\"\n label=\"Look up Countries\"\n value={countrySearchTerm}\n handleValueChange={(_, newVal) =>\n setCountrySearchTerm(newVal)\n }\n search={searchCountries}\n searchResults={countriesSearchResults}\n loading={countriesSearchLoading}\n autoFocus={false}\n resultsInModal\n priorityFunction={(i, searchTerm) => {\n if (i.countryCode === searchTerm?.toUpperCase()) {\n return 1;\n }\n return 0;\n }}\n onResultSelect={newValue => {\n setCountrySearchTerm(newValue.countryCode);\n setAddress(a => ({\n ...a,\n countryCode: newValue.countryCode,\n countryName: newValue.countryName\n }));\n }}\n clearSearch={clearCountriesSearch}\n />\n </Grid>\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.countryName}\n label=\"Name\"\n propertyName=\"countryName\"\n onChange={() => {}}\n />\n </Grid>\n <Grid size={12}>\n <SaveBackCancelButtons\n saveDisabled={!address?.addressee || !address?.countryCode}\n backClick={close}\n saveClick={() => {\n createAddress(address);\n }}\n cancelClick={close}\n />\n </Grid>\n </>\n )}\n </Grid>\n </Box>\n </Dialog>\n </>\n );\n}\n\nexport default AddressUtility;\n","import React, { useState } from 'react';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport InputLabel from '@mui/material/InputLabel';\nimport TextField from '@mui/material/TextField';\n\nfunction AutoComplete({\n label,\n options = [],\n value = null,\n onChange,\n getOptionLabel,\n isOptionEqualToValue,\n matchesInput,\n idField,\n labelField,\n required = false,\n disabled = false,\n disableClearable = false\n}) {\n const [inputValue, setInputValue] = useState(null);\n\n // Convenience mode: when idField/labelField are supplied the three option callbacks are derived\n // from them, and `value`/`onChange` speak the plain id (not the option object) — so a caller passing\n // a coded list just gives the field names and works in ids. Omit them for the original object-mode\n // API where the caller supplies the callbacks and the value/onChange are the whole option object.\n const resolvedGetOptionLabel =\n getOptionLabel ??\n (labelField\n ? option => option?.[labelField] ?? (idField ? String(option[idField]) : '')\n : option => `${option ?? ''}`);\n\n const resolvedIsOptionEqualToValue =\n isOptionEqualToValue ??\n (idField ? (option, selected) => option?.[idField] === selected?.[idField] : undefined);\n\n const resolvedMatchesInput =\n matchesInput ??\n (idField ? (option, typed) => String(option?.[idField]) === typed : undefined);\n\n // In id mode, resolve the incoming id to its option object for display and emit the id back out.\n const selectedOption = idField\n ? (options.find(option => option?.[idField] === value) ?? null)\n : value;\n const emitChange = idField ? option => onChange(option?.[idField] ?? null) : onChange;\n\n const optionLabel = option => resolvedGetOptionLabel(option);\n\n const handleBlur = () => {\n const typedValue = inputValue?.trim();\n if (typedValue) {\n const matchingOption = options.find(\n option =>\n optionLabel(option).toUpperCase() === typedValue.toUpperCase() ||\n resolvedMatchesInput?.(option, typedValue)\n );\n if (matchingOption) emitChange(matchingOption);\n }\n setInputValue(null);\n };\n\n return (\n <Autocomplete\n size=\"small\"\n autoHighlight\n disableClearable={disableClearable}\n options={options}\n value={selectedOption}\n inputValue={inputValue ?? (selectedOption ? optionLabel(selectedOption) : '')}\n getOptionLabel={optionLabel}\n isOptionEqualToValue={resolvedIsOptionEqualToValue}\n onChange={(_, option) => {\n emitChange(option);\n setInputValue(null);\n }}\n onInputChange={(_, newValue, reason) => {\n if (reason === 'input') setInputValue(newValue);\n if (reason === 'clear') setInputValue('');\n }}\n onBlur={handleBlur}\n disabled={disabled}\n renderInput={params => (\n <>\n <InputLabel\n required={required}\n sx={{\n fontSize: theme => theme.typography.fontSize,\n color: 'inherit',\n '& .MuiInputLabel-asterisk': {\n color: theme => theme.palette.error.main\n }\n }}\n htmlFor={params.id}\n >\n {label}\n </InputLabel>\n <TextField\n {...params}\n sx={{ paddingTop: 0, marginTop: theme => theme.spacing(1) }}\n margin=\"dense\"\n size=\"small\"\n required={required}\n variant=\"outlined\"\n />\n </>\n )}\n />\n );\n}\n\nexport default AutoComplete;\n","import React from 'react';\nimport Button from '@mui/material/Button';\n\nfunction BackButton({ backClick, text = null }) {\n return (\n <div style={{ float: 'left' }}>\n <Button id=\"back-button\" onClick={backClick}>\n {text || 'Back'}\n </Button>\n </div>\n );\n}\n\nexport default BackButton;\n","import React from 'react';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\n\nfunction ConfirmDialog({\n visible,\n title = 'Are you sure?',\n confirmButtonText = 'Confirm',\n cancelButtonText = 'Cancel',\n primaryText = null,\n secondaryText = null,\n onConfirm,\n maxWidth = 'md',\n onCancel = null,\n closeDialog\n}) {\n return (\n <Dialog open={visible} fullWidth maxWidth={maxWidth}>\n <DialogTitle variant=\"h4\">{title}</DialogTitle>\n\n <DialogContent dividers>\n {primaryText && <Typography variant=\"h6\">{primaryText}</Typography>}\n {secondaryText && <Typography>{secondaryText}</Typography>}\n </DialogContent>\n <DialogActions>\n <Button\n onClick={() => {\n closeDialog();\n onCancel?.();\n }}\n variant=\"outlined\"\n >\n {cancelButtonText}\n </Button>\n <Button\n variant=\"contained\"\n onClick={() => {\n closeDialog();\n onConfirm();\n }}\n >\n {confirmButtonText}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n\nexport default ConfirmDialog;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport Button from '@mui/material/Button';\n\nfunction CreateButton({ createUrl, disabled = false }) {\n return (\n <Link to={createUrl} style={{ textDecoration: 'none' }}>\n <Button color=\"primary\" variant=\"outlined\" sx={{ float: 'right' }} disabled={disabled}>\n Create\n </Button>\n </Link>\n );\n}\n\nexport default CreateButton;\n","import React from 'react';\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\nimport InputLabel from '@mui/material/InputLabel';\nimport moment from 'moment';\n\nfunction Picker({\n value = new Date().toISOString(),\n minDate = null,\n maxDate = null,\n label = '',\n onChange = () => {},\n required = false,\n disabled = false,\n datePickerProps = null\n}) {\n return (\n <>\n <InputLabel sx={theme => theme.typography.fontSize} required={required}>\n {label}\n </InputLabel>\n <DatePicker\n format=\"DD/MM/YYYY\"\n slotProps={{\n textField: {\n variant: 'outlined',\n fullWidth: true,\n size: 'small',\n sx: {\n mt: 1\n }\n }\n }}\n value={value ? moment(value) : null}\n minDate={minDate ? moment(minDate) : null}\n maxDate={maxDate ? moment(maxDate) : null}\n onChange={onChange}\n disabled={disabled}\n {...datePickerProps}\n />\n </>\n );\n}\n\nexport default Picker;\n","import React from 'react';\nimport { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';\nimport InputLabel from '@mui/material/InputLabel';\nimport moment from 'moment';\n\nfunction Picker({\n label = '',\n value = new Date().toISOString(),\n onChange = () => {},\n minDate = undefined,\n maxDate = undefined,\n required = false,\n disabled = false\n}) {\n return (\n <>\n <InputLabel sx={theme => theme.typography.fontSize} required={required}>\n {label}\n </InputLabel>\n <DateTimePicker\n ampm={false}\n value={moment(value)}\n minDate={moment(minDate)}\n maxDate={moment(maxDate)}\n onChange={onChange}\n disabled={disabled}\n format=\"DD/MM/YYYY HH:mm\"\n slotProps={{\n textField: {\n variant: 'outlined',\n fullWidth: true,\n size: 'small',\n sx: {\n mt: 1\n }\n }\n }}\n />\n </>\n );\n}\n\nexport default Picker;\n","import React, { useState } from 'react';\nimport Button from '@mui/material/Button';\nimport Tooltip from '@mui/material/Tooltip';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport Loading from './Loading.js';\n\nfunction ExportButton({\n href,\n accept = 'text/csv',\n fileName = 'export.csv',\n buttonText = 'EXPORT',\n tooltipText = 'Download report as CSV file',\n disabled = false,\n accessToken = null\n}) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(false);\n\n let h = {\n Accept: accept\n };\n\n if (accessToken) {\n h = { ...h, Authorization: `Bearer ${accessToken}` };\n }\n\n const download = () =>\n fetch(href, {\n headers: new Headers(h)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error('Network response was not OK');\n }\n return response.blob();\n })\n .then(blob => {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n a.remove();\n })\n .then(() => setLoading(false))\n .catch(() => {\n setError(true);\n setLoading(false);\n alert('Download failed');\n });\n\n return (\n <div style={{ float: 'right' }}>\n <Tooltip title={tooltipText} placement=\"top-end\">\n {loading ? (\n <Loading />\n ) : (\n <Button\n variant=\"outlined\"\n disabled={disabled}\n color={error ? 'secondary' : 'primary'}\n onClick={() => {\n setLoading(true);\n setError(false);\n download();\n }}\n >\n {error ? 'Retry' : buttonText}\n <SvgIcon>\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n d=\"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z\"\n />\n </SvgIcon>\n </Button>\n )}\n </Tooltip>\n </div>\n );\n}\n\nexport default ExportButton;\n","import React, { useState, useCallback } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Accordion from '@mui/material/Accordion';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ErrorCard from './ErrorCard.js';\nimport SnackbarMessage from './SnackbarMessage.js';\nimport Loading from './Loading.js';\n\nfunction FileUploader({\n helperText = 'Upload a File',\n title = 'File Uploader',\n initiallyExpanded = true,\n loading = false,\n result = null,\n snackbarVisible = false,\n setSnackbarVisible = null,\n initialFile = null,\n onFileSelect = () => {},\n doUpload\n}) {\n const [file, setFile] = useState(initialFile);\n const [expanded, setExpanded] = useState(initiallyExpanded);\n\n const onDrop = useCallback(\n acceptedFile => {\n setFile(acceptedFile[0]);\n onFileSelect(acceptedFile[0]);\n },\n [onFileSelect]\n );\n const { getRootProps, getInputProps } = useDropzone({ onDrop });\n\n const handleUploadClick = () => {\n const reader = new globalThis.FileReader();\n reader.onload = () => {\n const binaryStr = reader.result;\n doUpload(binaryStr);\n };\n reader.readAsArrayBuffer(file);\n setFile(null);\n };\n\n return (\n <>\n {snackbarVisible && (\n <SnackbarMessage\n visible={snackbarVisible && result?.success}\n onClose={() => setSnackbarVisible(false)}\n message={result?.message}\n />\n )}\n <Accordion expanded={expanded} onChange={() => setExpanded(!expanded)}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel2a-content\"\n id=\"panel2a-header\"\n >\n <Typography variant=\"h5\">{title}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Grid container spacing={3}>\n <Grid size={12}>\n <Typography variant=\"subtitle1\">{helperText}</Typography>\n </Grid>\n {loading ? (\n <Grid size={12}>\n <Loading />\n </Grid>\n ) : (\n <>\n <Grid size={12}>\n <Box\n sx={{ border: '1px dashed grey', margin: '10px' }}\n style={{ cursor: 'pointer' }}\n {...getRootProps()}\n >\n <Typography\n style={{ paddingTop: '10px', paddingBottom: '20px' }}\n variant=\"subtitle2\"\n >\n Drop the file here or click to browse...\n </Typography>\n <input {...getInputProps()} />\n\n {file && (\n <Chip\n label={file.name}\n color=\"primary\"\n onDelete={() => setFile(null)}\n variant=\"outlined\"\n />\n )}\n </Box>\n </Grid>\n <Grid size={11} />\n <Grid size={1}>\n <Button\n id=\"save-button\"\n variant=\"contained\"\n color=\"primary\"\n onClick={handleUploadClick}\n disabled={!file}\n >\n Upload\n </Button>\n </Grid>\n {result && !result.success && (\n <Grid size={12}>\n <ErrorCard\n errorMessage={result.message}\n detailLines={result?.errors}\n />\n </Grid>\n )}\n </>\n )}\n </Grid>\n </AccordionDetails>\n </Accordion>\n </>\n );\n}\n\nexport default FileUploader;\n","import React from 'react';\nimport Button from '@mui/material/Button';\nimport Tooltip from '@mui/material/Tooltip';\nimport Link from '@mui/material/Link';\n\nfunction LinkButton({\n to,\n external = false,\n newTab = false,\n tooltip = null,\n text,\n disabled = false\n}) {\n const button = (\n <Button\n color=\"primary\"\n aria-label=\"Search\"\n variant=\"outlined\"\n sx={{\n marginLeft: 1,\n marginTop: 3\n }}\n disabled={disabled}\n >\n {text}\n </Button>\n );\n\n const wrappedButton = tooltip ? (\n <Tooltip title={tooltip}>\n <div>{button}</div>\n </Tooltip>\n ) : (\n button\n );\n\n if (disabled) {\n return wrappedButton;\n }\n\n return (\n <div>\n {external ? (\n <a\n href={to}\n target={newTab ? '_blank' : '_self'}\n rel=\"noreferrer\"\n style={{\n textDecoration: 'none'\n }}\n >\n {wrappedButton}\n </a>\n ) : (\n <Link\n to={to}\n style={{\n textDecoration: 'none'\n }}\n >\n {wrappedButton}\n </Link>\n )}\n </div>\n );\n}\n\nexport default LinkButton;\n","import React, { useEffect, useState } from 'react';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport AppBar from '@mui/material/AppBar';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Toolbar from '@mui/material/Toolbar';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport { useSnackbar } from 'notistack';\nimport AccountCircle from '@mui/icons-material/AccountCircle';\nimport Search from '@mui/icons-material/Search';\nimport Notifications from '@mui/icons-material/Notifications';\nimport utilities from '../utilities/index.js';\nimport Panel from './Panel.js';\nimport SearchPanel from './SearchPanel.js';\n\nfunction Navigation({\n sections = null,\n loading = false,\n username = '',\n myStuff = null,\n notifications = [],\n handleSignOut = null\n}) {\n const [selected, setSelected] = useState(false);\n const [anchorEl, setAnchorEl] = useState();\n const [hoveredSectionId, setHoveredSectionId] = useState(null);\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n const styles = {\n root: {\n position: 'absolute',\n width: '100%',\n margin: 0,\n top: 0,\n zIndex: 10\n },\n tabLabel: {\n fontSize: '1rem',\n color: '#B0B0B0'\n },\n snackbarNew: {\n background: '#1a73e8',\n width: '800px'\n },\n snackbarSeen: {\n width: '800px'\n },\n menuButton: {\n marginLeft: -12,\n marginRight: 20\n },\n tab: {\n minWidth: '100px'\n },\n toolbar: {\n paddingLeft: 0,\n paddingRight: 0\n },\n tabs: {\n paddingLeft: 0,\n flexGrow: 1\n },\n container: {\n width: '100%',\n margin: 0\n },\n appBar: {\n backgroundColor: '#424242',\n width: '100% !important',\n margin: 0,\n position: 'fixed',\n zIndex: 1300\n },\n icons: {\n cursor: 'pointer',\n color: 'white'\n }\n };\n const handleClose = () => {\n setAnchorEl();\n };\n\n useEffect(() => {\n const handleKeyDown = event => {\n if (event.key === 'Escape') {\n setSelected(false);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n if (sections) {\n const menuIds = sections.map(item => item.id);\n const searchOpen = selected === sections.length;\n const hoveredTabIndex = searchOpen ? menuIds.indexOf(hoveredSectionId) : -1;\n const tabsValue = hoveredTabIndex !== -1 ? hoveredTabIndex : searchOpen ? false : selected;\n\n const handleClick = event => {\n setAnchorEl(event.currentTarget);\n };\n\n const actions = (key, e) => (\n <>\n <Button\n variant=\"contained\"\n onClick={() => {\n window.location = utilities.getSelfHref(e);\n }}\n >\n View\n </Button>\n <Button\n onClick={() => {\n closeSnackbar(key);\n localStorage.setItem(e.title, e.content);\n markNotificationSeen(e);\n }}\n >\n Dismiss\n </Button>\n </>\n );\n\n const noNotifications = () => {\n return notifications.length === 0;\n };\n\n const queueNotifications = () => {\n if (noNotifications()) {\n enqueueSnackbar('No notifications to show!', {\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'right'\n },\n variant: 'info',\n preventDuplicate: true\n });\n } else {\n notifications.forEach((e, i) => {\n setTimeout(() => {\n enqueueSnackbar(`${e.title} ${e.content}`, {\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'right'\n },\n ContentProps: {\n sx: {\n root: localStorage.getItem(e.title)\n ? styles.snackbarSeen\n : styles.snackbarNew\n }\n },\n action: key => actions(key, e),\n preventDuplicate: true\n });\n }, i * 200);\n });\n }\n };\n\n return (\n <ClickAwayListener onClickAway={() => setSelected(false)}>\n <div className=\"hide-when-printing\">\n <Grid container spacing={3}>\n {sections && !loading && (\n <AppBar position=\"static\" sx={styles.appBar}>\n <Toolbar>\n <Grid container spacing={3} sx={styles.container}>\n <Grid size={9}>\n <Tabs\n sx={styles.tabs}\n value={tabsValue}\n onChange={(event, value) => {\n if (selected === value) {\n setSelected(false);\n } else {\n setSelected(value);\n }\n }}\n scrollButtons=\"auto\"\n variant=\"scrollable\"\n indicatorColor=\"primary\"\n textColor=\"primary\"\n >\n {sections.map(item => (\n <Tab\n id={item.id}\n key={item.id}\n sx={styles.tab}\n label={\n <span style={styles.tabLabel}>\n {item.title}\n </span>\n }\n selected={false}\n />\n ))}\n </Tabs>\n </Grid>\n <Grid size={1}>\n <Typography variant=\"h4\">\n <AccountCircle\n sx={styles.icons}\n aria-owns={anchorEl ? 'simple-menu' : undefined}\n onClick={handleClick}\n id={sections.length}\n key={sections.length}\n />\n </Typography>\n </Grid>\n <Grid size={1}>\n <Typography variant=\"h4\">\n <Badge\n badgeContent={notifications.length}\n color=\"primary\"\n variant=\"dot\"\n >\n <Notifications\n sx={styles.icons}\n onClick={queueNotifications}\n />\n </Badge>\n </Typography>\n </Grid>\n <Grid size={1}>\n <Typography variant=\"h4\">\n <Search\n sx={styles.icons}\n onClick={() => setSelected(sections.length)}\n />\n </Typography>\n </Grid>\n <Menu\n id=\"simple-menu\"\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={handleClose}\n >\n <MenuItem onClick={handleClose}>{username}</MenuItem>\n {username &&\n myStuff.groups.map(item => (\n <span key={item.items[0].href}>\n <a href={item.items[0].href}>\n <MenuItem onClick={handleClose}>\n {item.items[0].title}\n </MenuItem>\n </a>\n </span>\n ))}\n {handleSignOut && (\n <MenuItem\n style={{\n color: 'blue',\n textDecoration: 'underline',\n cursor: 'pointer',\n background: 'none'\n }}\n onClick={handleSignOut}\n >\n Sign Out (Newer apps pages)\n </MenuItem>\n )}\n </Menu>\n </Grid>\n </Toolbar>\n </AppBar>\n )}\n </Grid>\n {menuIds.map(\n (item, i) =>\n selected === i && (\n <Panel\n key={item}\n section={sections.find(e => e.id === item)}\n id={item}\n style={{ align: 'right' }}\n anchorEl={item.id}\n close={() => setSelected(false)}\n />\n )\n )}\n {selected === sections.length && (\n <SearchPanel\n menu={sections}\n close={() => {\n setSelected(false);\n setHoveredSectionId(null);\n }}\n onHoverSection={setHoveredSectionId}\n />\n )}\n </div>\n </ClickAwayListener>\n );\n }\n return (\n <div style={styles.root}>\n <AppBar position=\"static\" color=\"default\">\n <Toolbar sx={styles.toolbar} />\n </AppBar>\n </div>\n );\n}\n\nexport default Navigation;\n","import React from 'react';\nimport Grid from '@mui/material/Grid';\nimport { Typography } from '@mui/material';\n\nfunction NotFound() {\n return (\n <Grid container alignItems=\"flex-start\" styles={{ alignItems: 'flex-start' }}>\n <Typography variant=\"h4\">Page Not Found</Typography>\n </Grid>\n );\n}\n\nexport default NotFound;\n","import React from 'react';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\n\nfunction OnOffSwitch({ onChange, propertyName, value = false, label, disabled }) {\n const change = () => {\n onChange(propertyName, !value);\n };\n\n return (\n <FormControlLabel\n control={\n <Switch\n checked={value}\n onChange={change}\n value={value}\n color=\"primary\"\n disabled={disabled}\n />\n }\n label={label}\n />\n );\n}\n\nexport default OnOffSwitch;\n","import React from 'react';\n\nimport Tooltip from '@mui/material/Tooltip';\nimport EditOffIcon from '@mui/icons-material/EditOff';\nimport ModeEditIcon from '@mui/icons-material/ModeEdit';\n\nfunction PermissionIndicator({\n hasPermission = false,\n hasPermissionMessage = 'You have permission for this page',\n noPermissionMessage = 'You do not have permission for this page'\n}) {\n const pullRightStyle = { float: 'right' };\n\n return hasPermission ? (\n <Tooltip title={hasPermissionMessage}>\n <ModeEditIcon color=\"primary\" sx={pullRightStyle} />\n </Tooltip>\n ) : (\n <Tooltip title={noPermissionMessage}>\n <EditOffIcon color=\"secondary\" sx={pullRightStyle} />\n </Tooltip>\n );\n}\n\nexport default PermissionIndicator;\n","import React from 'react';\n\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight';\nimport ArrowLeftIcon from '@mui/icons-material/ArrowLeft';\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\n\nfunction PrevNextButtons({\n goPrev = null,\n goNext = null,\n nextResult = '',\n prevResult = '',\n disabled = false\n}) {\n return (\n <>\n {goPrev ? (\n <Grid size={2}>\n <Button disabled={disabled} startIcon={<ArrowLeftIcon />} onClick={goPrev}>\n {prevResult}\n </Button>\n </Grid>\n ) : (\n <Grid size={2} />\n )}\n <Grid size={8} />\n {goNext ? (\n <Grid size={2}>\n <Button disabled={disabled} endIcon={<ArrowRightIcon />} onClick={goNext}>\n {nextResult}\n </Button>\n </Grid>\n ) : (\n <Grid size={2} />\n )}\n </>\n );\n}\n\nexport default PrevNextButtons;\n","import React from 'react';\n\nimport ReportDataGrid from './ReportDataGrid.js';\n\nfunction ReportDataGrids({\n reportData = [],\n renderZeroes = false,\n titlesVariant = 'h6',\n repeatHeaders = true,\n perReportExport = false,\n openLinksInNewTabs = true,\n showTotals = false,\n fixedRowHeight = false,\n showRowCount = false\n}) {\n return (\n <>\n {reportData.map((d, i) => (\n <ReportDataGrid\n key={d.title.displayString}\n report={d}\n showExport={perReportExport}\n showTotals={showTotals}\n fixedRowHeight={fixedRowHeight}\n renderZeroes={renderZeroes}\n titleVariant={titlesVariant}\n showHeader={repeatHeaders || i === 0}\n openLinksInNewTabs={openLinksInNewTabs}\n showRowCount={showRowCount}\n />\n ))}\n </>\n );\n}\n\nexport default ReportDataGrids;\n","import React from 'react';\nimport List from '@mui/material/List';\nimport Box from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport ListItemText from '@mui/material/ListItemText';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport IconButton from '@mui/material/IconButton';\nimport Divider from '@mui/material/Divider';\n\nfunction SelectedItemsList({\n items,\n removeItem = null,\n title = 'Items Selected',\n maxHeight = null\n}) {\n return (\n <>\n <Typography\n variant=\"body1\"\n sx={{\n marginBottom: '8px'\n }}\n >\n {title}\n </Typography>\n <List\n dense\n sx={{\n width: '100%',\n position: 'relative',\n overflow: 'auto',\n ...(maxHeight && { maxHeight })\n }}\n >\n {items.map(item => (\n <Box key={item.id ? item.id : item}>\n <ListItem\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: '8px 16px'\n }}\n >\n <ListItemText primary={item.displayText ? item.displayText : item} />\n {removeItem && (\n <IconButton\n aria-label=\"delete\"\n onClick={() => removeItem(item.id ? item.id : item)}\n size=\"large\"\n sx={{\n marginLeft: 'auto'\n }}\n >\n <DeleteIcon />\n </IconButton>\n )}\n </ListItem>\n <Divider />\n </Box>\n ))}\n </List>\n </>\n );\n}\n\nexport default SelectedItemsList;\n","import React, { useEffect } from 'react';\n\nconst initialiseOnMount = ComposedComponent =>\n function HOC(props) {\n // eslint-disable-next-line react/prop-types\n const { initialise, itemId } = props;\n useEffect(() => {\n if (initialise && itemId) {\n initialise({ itemId });\n } else if (initialise) {\n initialise(props);\n }\n }, [initialise, itemId]);\n\n return <ComposedComponent {...props} />;\n };\n\nexport default initialiseOnMount;\n","import { useEffect, useState } from 'react';\n\n// This hook returns debounced updates to a passed input value\n// The first returned value is only updated when the input value has been changed and the specified delay time has elapsed\n// The second returned value is a bool that tracks whether the value is currently being debounced\nfunction useDebounceValue(value, delay = 1000) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n const [isDebouncing, setIsDebouncing] = useState(false);\n\n useEffect(() => {\n setIsDebouncing(true);\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n setIsDebouncing(false);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return [debouncedValue, isDebouncing];\n}\n\nexport default useDebounceValue;\n","import { useState } from 'react';\nimport { useAuth } from 'react-oidc-context';\n\nfunction useDelete(url, requiresAuth = false) {\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n const [deleteResult, setDeleteResult] = useState(null);\n\n let token = '';\n\n const clearData = () => setDeleteResult(null);\n\n const auth = useAuth();\n if (requiresAuth) {\n token = auth.user?.access_token;\n }\n\n const send = async id => {\n setIsLoading(true);\n setDeleteResult(null);\n setErrorMessage(null);\n\n const headers = {\n accept: 'application/json',\n 'Content-Type': 'application/json'\n };\n const requestParameters = {\n method: 'DELETE',\n headers: requiresAuth ? { ...headers, Authorization: `Bearer ${token}` } : headers\n };\n\n const response = await fetch(`${url}/${id}`, requestParameters);\n if (response.ok) {\n setDeleteResult(await response.json());\n setIsLoading(false);\n } else {\n const text = await response.text();\n setErrorMessage(text);\n setIsLoading(false);\n }\n };\n return { send, isLoading, errorMessage, deleteResult, clearData };\n}\n\nexport default useDelete;","import { useState } from 'react';\nimport useGet from './useGet.js';\n\n// performs a single GET request once, as soon as the calling component is first mounted\n// the url is specified by the below parameters, where id and queryString are optional\nfunction useInitialise(url, id, queryString, requiresAuth = false) {\n const [hasFetched, setHasFetched] = useState(false);\n const { send, isLoading, errorMessage, result } = useGet(url, requiresAuth);\n\n if (!hasFetched) {\n send(id, queryString);\n setHasFetched(true);\n }\n return { isLoading, errorMessage, result };\n}\n\nexport default useInitialise;\n","import { useState, useRef, useCallback } from 'react';\nimport utilities from '../utilities/index.js';\nimport { useAuth } from 'react-oidc-context';\nimport { useNavigate } from 'react-router-dom';\n\nfunction usePost(url, requiresAuth = false, redirectOnSuccess = false) {\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n const [postResult, setPostResult] = useState(null);\n\n const navigate = useNavigate();\n const abortControllerRef = useRef(null);\n\n let token = '';\n const auth = useAuth();\n if (requiresAuth) {\n token = auth.user?.access_token;\n }\n\n const clearPostResult = useCallback(() => {\n setPostResult(null);\n setErrorMessage(null);\n }, []);\n\n const send = useCallback(\n async (id, data) => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n const controller = new AbortController();\n abortControllerRef.current = controller;\n\n setIsLoading(true);\n setPostResult(null);\n setErrorMessage(null);\n\n const headers = {\n accept: 'application/json',\n 'Content-Type': 'application/json'\n };\n\n const requestParameters = {\n method: 'POST',\n body: JSON.stringify(data),\n headers: requiresAuth ? { ...headers, Authorization: `Bearer ${token}` } : headers,\n signal: controller.signal\n };\n\n try {\n const response = await fetch(id ? `${url}/${id}` : url, requestParameters);\n\n if (response.ok) {\n const result = await response.json();\n setPostResult(result);\n if (redirectOnSuccess) {\n setPostResult(null);\n navigate(utilities.getSelfHref(result));\n }\n } else {\n const text = await response.text();\n setErrorMessage(text);\n }\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted.');\n } else {\n setErrorMessage('An error occurred.');\n }\n } finally {\n setIsLoading(false);\n }\n },\n [requiresAuth, token, url, redirectOnSuccess, navigate]\n );\n\n const cancelRequest = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { send, cancelRequest, isLoading, errorMessage, postResult, clearPostResult };\n}\n\nexport default usePost;\n","import { useLocation, useParams } from 'react-router-dom';\n\nexport default function usePreviousNextNavigation(\n urlBuilder,\n searchResults,\n navigateFunction,\n idStyle = 'param',\n idFieldName\n) {\n const { search } = useLocation();\n const params = new URLSearchParams(search);\n const { id } = useParams();\n\n let idField;\n\n if (idStyle === 'query') {\n idField = params.get(idFieldName);\n } else {\n idField = id;\n }\n\n const currentIndex = searchResults?.indexOf(idField);\n const currentResult = searchResults?.[currentIndex];\n const nextResult = searchResults?.[currentIndex + 1];\n const prevResult = searchResults?.[currentIndex - 1];\n\n const goNext = nextResult\n ? () => {\n navigateFunction(`${urlBuilder(nextResult)}`, { searchResults });\n }\n : null;\n const goPrev = prevResult\n ? () => {\n navigateFunction(`${urlBuilder(prevResult)}`, { searchResults });\n }\n : null;\n\n return [goPrev, goNext, prevResult, nextResult, currentResult];\n}\n","import { useState } from 'react';\nimport { useAuth } from 'react-oidc-context';\n\nfunction usePut(url, requiresAuth = false) {\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n\n const [putResult, setPutResult] = useState(null);\n\n let token = '';\n\n const clearPutResult = () => setPutResult(null);\n\n const auth = useAuth();\n if (requiresAuth) {\n token = auth.user?.access_token;\n }\n\n const send = async (id, data) => {\n setIsLoading(true);\n setPutResult(null);\n setErrorMessage(null);\n\n const headers = {\n accept: 'application/json',\n 'Content-Type': 'application/json'\n };\n const requestParameters = {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: requiresAuth ? { ...headers, Authorization: `Bearer ${token}` } : headers\n };\n\n const response = await fetch(id ? `${url}/${id}` : url, requestParameters);\n\n if (response.ok) {\n setPutResult(await response.json());\n setIsLoading(false);\n } else {\n const text = await response.text();\n setErrorMessage(text);\n setIsLoading(false);\n }\n };\n\n return { send, isLoading, errorMessage, putResult, clearPutResult };\n}\n\nexport default usePut;\n","import useGet from './useGet.js';\n\nfunction useSearch(\n url,\n idFieldKey = 'id',\n nameFieldKey = 'name',\n descriptionFieldKey = 'description',\n requiresAuth = false,\n itemsArray = false\n) {\n const { send, isLoading, result, clearData } = useGet(url, requiresAuth);\n\n // some old lookups like employees have stupid items array\n const results = itemsArray\n ? (result?.items.map(s => ({\n ...s,\n id: s[idFieldKey],\n name: s[nameFieldKey]?.toString(),\n description: s[descriptionFieldKey]\n })) ?? [])\n : (result?.map(s => ({\n ...s,\n id: s[idFieldKey],\n name: s[nameFieldKey]?.toString(),\n description: s[descriptionFieldKey]\n })) ?? []);\n const search = searchTerm => send(null, `?searchTerm=${searchTerm}`);\n const loading = isLoading;\n const clear = clearData;\n return { search, results, loading, clear };\n}\n\nexport default useSearch;\n","import { useEffect, useState } from 'react';\nimport { useAuth, hasAuthParams } from 'react-oidc-context';\n\nfunction useSignIn() {\n const auth = useAuth();\n\n const [hasTriedSignin, setHasTriedSignin] = useState(false);\n\n // automatically sign-in\n useEffect(() => {\n if (\n !hasAuthParams() &&\n !auth.isAuthenticated &&\n !auth.activeNavigator &&\n !auth.isLoading &&\n !hasTriedSignin\n ) {\n auth.signinRedirect();\n sessionStorage.setItem('auth:redirect', window.location.pathname);\n setHasTriedSignin(true);\n }\n }, [auth, hasTriedSignin]);\n}\n\nexport default useSignIn;\n","import { useAuth } from 'react-oidc-context';\n\nfunction useUserProfile() {\n const auth = useAuth();\n return {\n userNumber: auth?.user?.profile?.employee?.split('/')?.[2],\n userName: auth?.user?.profile?.preferred_username,\n name: auth?.user?.profile?.name\n };\n}\n\nexport default useUserProfile;\n"],"names":["Loading","_jsx","Box","sx","textAlign","margin","theme","spacing","height","children","CircularProgress","Breadcrumbs","_ref","navigate","rootPathLength","homeUrl","location","path","pathname","endsWith","substring","length","crumbs","split","filter","x","reduce","sofar","crumb","i","list","currentPath","slice","join","key","caption","href","onClick","e","preventDefault","_jsxs","style","marginLeft","Link","variant","cursor","_Fragment","map","index","Typography","display","SaveBackCancelButtons","saveClick","cancelClick","saveDisabled","backClick","showBackButton","editStatus","saveButtonLabelText","editing","float","Button","id","marginRight","color","disabled","hasValue","val","hasDisplayText","items","some","item","displayText","getOptions","allowNoValue","arguments","undefined","options","push","ErrorCard","errorMessage","detailLines","Card","width","padding","backgroundColor","palette","error","light","Error","dark","align","d","descriptor","message","InputField","onChange","propertyName","type","adornment","fullWidth","helperText","label","maxLength","rows","name","placeholder","required","value","decimalPlaces","textFieldProps","autoFocus","onErrorStateChange","visible","autoComplete","inputRef","useRef","inErrorState","setInErrorState","useState","setErrorMessage","useEffect","setTimeout","current","focus","InputLabel","fontSize","typography","main","htmlFor","TextField","paddingTop","marginTop","multiline","size","onWheel","blur","newValue","target","parseFloat","indexOf","change","slotProps","input","startAdornment","InputAdornment","position","formHelperText","text","primary","onInput","pageWidth","xs","s","m","l","xl","columnWidth","getListItemText","entity","entityid","descriptionFieldName","SnackbarMessage","onClose","timeOut","Snackbar","anchorOrigin","vertical","horizontal","content","open","autoHideDuration","action","IconButton","CloseIcon","exports","hookCallback","hooks","apply","setHookCallback","callback","isArray","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","arr","fn","res","arrLen","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidOffset","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid$2","flags","parsedParts","isNowValid","_d","isNaN","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid$1","NaN","fun","t","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","isValid","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","argLen","stack","deprecations","deprecateSimple","isFunction","Function","aliases","D","dates","date","days","day","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","h","hours","hour","ms","milliseconds","millisecond","minutes","minute","M","months","month","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","w","weeks","week","W","isoweeks","isoweek","y","years","year","normalizeUnits","units","toLowerCase","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","sort","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","mom","output","formatMoment","invalidDate","cacheKey","expandFormat","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","get$2","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod$1","n","daysInMonth","modMonth","o","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","monthsParseProperties","clearMonthsParseCache","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse$1","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdayEnd","keys","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","weekdaysParseProperties","clearWeekdaysParseCache","localeWeekdays","_weekdays","_week","dow","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","add","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","set","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar$1","now","_calendar","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","formatCache","_longDateFormatCache","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","relativeTimeWithoutPostformat","withoutSuffix","string","isFuture","_relativeTime","relativeTime$1","postformat","pastFutureWithoutPostformat","diff","pastFuture","createDate","createUTCDate","UTC","firstWeekOffset","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYearFromDayOfYear","resWeek","weekOffset","weeksInYear","weekOfYear","weekOfYearFromDate","round","weekOffsetNext","localeWeek","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","charAt","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","calendar","dayOfMonthOrdinalParse","relativeTime","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","normalizedName","oldLocale","module","_abbr","require","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","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","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","c","currentDateArray","forWeek","hadWeekContext","weekContext","_isDefaultDatePartsForWeek","_getDefaultDateParts","currentDateNow","_defaultDatePartsNow","getDefaultDateParts","useWeekDefaults","nowValue","createLocal","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dateIsDefaulted","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","defaultDatePartsNow","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract$1","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","add$1","subtract$1","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","time","formats","sod","startOf","calendarFormat","clone$1","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString$1","keepOffset","toISOString","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","valueOf$1","unix","toObject","toJSON","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto$2","createUnix","createInZone","parseZone","preParsePostFormat","get","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","abs$1","addSubtract","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","SearchInputField","rest","xmlns","viewBox","utilities","getHref","itemWithLinks","rel","links","link","find","getSelfHref","sortList","sortEntityList","Panel","section","close","columns","Paper","zIndex","top","right","Close","Grid","container","col","md","lg","categories","showInMenu","category","List","dense","ListItem","paddingBottom","gutterBottom","title","entry","textDecoration","lineHeight","marginBottom","styles","paper","SearchPanel","menu","onHoverSection","searchTerm","setSearchTerm","menuEntries","useMemo","flatMap","sectionId","breadcrumb","uniqueEntries","uniques","sm","handleFieldChange","includes","onMouseEnter","onMouseLeave","onFocus","onBlur","gap","linnTheme","createTheme","cloneDate","moment","getWeekStartDate","dateClone","getWeekEndDate","CustomPickerDay","styled","PickerDay","shouldForwardProp","dayIsBetween","isFirstDay","isLastDay","borderRadius","common","white","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","styleInject","css","ref","insertAt","document","head","getElementsByTagName","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","objectAssign","shouldUseNative","assign","test1","test2","fromCharCode","test3","letter","err","symbols","TypeError","ReactPropTypesSecret_1","has","bind","printWarning","process","env","NODE_ENV","ReactPropTypesSecret","require$$0","loggedTypeFailures","require$$1","checkPropTypes","typeSpecs","componentName","getStack","typeSpecName","ex","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","bigint","bool","object","symbol","any","createAnyTypeChecker","createChainableTypeChecker","arrayOf","createArrayOfTypeChecker","typeChecker","validate","props","propName","propFullName","PropTypeError","propValue","getPropType","element","createElementTypeChecker","elementType","createElementTypeTypeChecker","isValidElementType","instanceOf","createInstanceTypeChecker","expectedClass","expectedClassName","getClassName","constructor","node","createNodeChecker","isNode","objectOf","createObjectOfTypeChecker","propType","oneOf","createEnumTypeChecker","expectedValues","is","valuesString","JSON","stringify","replacer","getPreciseType","oneOfType","createUnionTypeChecker","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedType","shape","createShapeTypeChecker","shapeTypes","invalidValidatorError","exact","createStrictShapeTypeChecker","allKeys","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","chainedCheckType","every","iteratorFn","getIteratorFn","maybeIterable","step","entries","done","isSymbol","PropTypes","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","isElement","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","rejected","adopt","then","SuppressedError","COMMON_MIME_TYPES","Map","toFileWithPath","file","f","withMimeType","lastIndexOf","ext","pop","defineProperty","writable","configurable","enumerable","webkitRelativePath","p","setObjProp","FILES_TO_IGNORE","v","noIgnoredFiles","files","fromList","toFilePromises","webkitGetAsEntry","fromDataTransferItem","isDirectory","fromDirEntry","flatten","acc","globalThis","isSecureContext","getAsFileSystemHandle","getFile","handle","getAsFile","fullPath","fromEntry","fromFileEntry","fwp","reader","createReader","readEntries","batch","all","es","default","acceptedFiles","acceptedFilesArray","fileName","mimeType","baseMimeType","validType","trim","_toConsumableArray","_arrayWithoutHoles","_arrayLikeToArray","_iterableToArray","iter","_unsupportedIterableToArray","_nonIterableSpread","ownKeys","enumerableOnly","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_s","_e","_arr","_n","_nonIterableRest","minLen","accepts","_accepts","getInvalidTypeRejectionErr","acceptArr","code","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","accept","isAcceptable","isDataTransferItemWithEmptyType","fileMatchSize","isDefined","isPropagationStopped","event","cancelBubble","isEvtWithFiles","dataTransfer","types","onDocumentDragOver","composeEventHandlers","_len","fns","_key","_len2","_key2","isMIMEType","isExt","_excluded","_excluded2","_excluded3","_excluded4","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceKeys","sourceSymbolKeys","Dropzone","forwardRef","_useDropzone","useDropzone","useImperativeHandle","React","Fragment","displayName","defaultProps","getFilesFromEvent","fromEvent","evt","isDataTransfer","getDataTransferFiles","dt","kind","isChangeEvt","getInputFiles","getFsHandleFiles","handles","Infinity","multiple","maxFiles","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","validator","useFsAccessApi","propTypes","onFileDialogCancel","onFileDialogOpen","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","onError","initialState","isFocused","isFileDialogActive","isDragActive","isDragAccept","isDragReject","isDragGlobal","fileRejections","_defaultProps$props","acceptAttr","acceptPropAsAcceptAttr","_ref6","_ref7","pickerTypes","pickerOptionsFromAccept","description","_ref2","_ref3","ok","agg","_ref4","_ref5","onFileDialogOpenCb","noop","onFileDialogCancelCb","rootRef","_useReducer2","useReducer","reducer","state","dispatch","fsAccessApiWorksRef","window","canUseFileSystemAccessAPI","onWindowFocus","addEventListener","removeEventListener","dragTargetsRef","globalDragTargetsRef","onDocumentDrop","contains","onDocumentDragEnter","onDocumentDragLeave","el","onDocumentDragEnd","onDocumentDropGlobal","onErrCb","useCallback","onDragEnterCb","persist","stopPropagation","fileCount","allFilesAccepted","accepted","sizeMatch","customErrors","catch","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targets","targetIdx","splice","setFiles","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","errors","onDropCb","openFileDialog","opts","showOpenFilePicker","isAbort","DOMException","ABORT_ERR","isSecurityError","SECURITY_ERR","click","onKeyDownCb","isEqualNode","keyCode","onFocusCb","onBlurCb","onClickCb","isIeOrEdge","userAgent","navigator","isIe","isEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","role","onKeyDown","tabIndex","onInputElementClick","getInputProps","_ref3$refKey","border","clip","clipPath","whiteSpace","Search","handleValueChange","search","searchResults","loading","priorityFunction","onResultSelect","resultLimit","resultsInModal","showResultsList","clearSearch","searchOnEnter","onKeyPressFunctions","displayChips","handleOnBlur","dialogOpen","setDialogOpen","hasSearched","setHasSearched","resultsHidden","setResultsHidden","listRef","focusInput","_document$getElementB","getElementById","focusResultAt","_listRef$current","querySelectorAll","timer","clearTimeout","hideResults","handleListKeyDown","_listRef$current2","currentIndex","activeElement","resultItem","_item$chips","ListItemButton","selectResult","Stack","fontWeight","fontWeightBold","justifyContent","alignItems","divider","Divider","orientation","flexItem","chips","Chip","results","_result","countMatchingCharacters","count","r","component","SearchIcon","handleQueryChange","Dialog","maxWidth","minWidth","ReportDataGrid","_report$title","_report$title$drillDo","_rows","report","renderZeroes","titleVariant","showHeader","showExport","showTotals","openLinksInNewTabs","fixedRowHeight","showRowCount","renderCell","params","_params$row","row","url","external","formattedValue","Tooltip","headers","dataGridColumnSpecifications","_report$headers$total","columnId","headerName","columnHeaders","headerAlign","cellClassName","totalColumns","valueFormatter","columnType","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","_r$values$i","_r$values$i2","_r$values$i3","_r$values$i4","textDisplayValue","displayValue","drillDowns","externalLink","attributes","rowTitle","displayString","rowType","slots","totals","totalsValues","spec","_totals$values$i","totalVal","titleHasDrilldowns","colourStyles","attribute","attributeType","className","attributeValue","fullPages","DataGrid","showToolbar","density","getRowHeight","disableRowSelectionOnClick","getRowClassName","hideFooter","getCellClassName","classes","gridClasses","cell","py","wordWrap","wordBreak","maxHeight","mt","pl","LinkValue","toolTip","font","Icon","OpenInNewIcon","LinkIcon","describeChild","underline","RouterLink","transform","pointerEvents","useGet","_auth$user2","requiresAuth","isLoading","setIsLoading","setResult","auth","useAuth","send","async","queryString","_auth$user","user","access_token","requestParameters","method","Authorization","response","fetch","json","clearData","DEFAULT_INVALID_CLASS","padCode","padStart","AddressUtility","createAddress","createAddressLoading","selectAddress","searchCountries","searchAddresses","countriesSearchResults","countriesSearchLoading","addressSearchResults","addressSearchLoading","clearAddressesSearch","clearCountriesSearch","defaultAddressee","isActive","setIsActive","address","setAddress","addressee","addressSearchTerm","setAddressSearchTerm","countrySearchTerm","setCountrySearchTerm","addressId","line1","postCode","countryCode","_","newVal","addressee2","line2","line3","line4","countryName","AutoComplete","getOptionLabel","isOptionEqualToValue","matchesInput","idField","labelField","disableClearable","inputValue","setInputValue","resolvedGetOptionLabel","option","resolvedIsOptionEqualToValue","selected","resolvedMatchesInput","typed","selectedOption","emitChange","optionLabel","Autocomplete","autoHighlight","onInputChange","reason","handleBlur","typedValue","matchingOption","renderInput","BackButton","checked","FormControlLabel","control","Checkbox","ConfirmDialog","confirmButtonText","cancelButtonText","primaryText","secondaryText","onConfirm","onCancel","closeDialog","DialogTitle","DialogContent","dividers","DialogActions","CreateButton","createUrl","Picker","minDate","maxDate","datePickerProps","DatePicker","textField","DateTimePicker","ampm","Dropdown","optionsLoading","selectableItems","getSelectableItems","currentValue","filtered","hideFromEdit","currentItem","select","native","EntityList","entityList","entityId","hasExternalLinks","Component","button","ExportButton","buttonText","tooltipText","accessToken","setLoading","setError","Accept","placement","Headers","blob","URL","createObjectURL","download","body","remove","alert","SvgIcon","FileUploader","initiallyExpanded","snackbarVisible","setSnackbarVisible","initialFile","onFileSelect","doUpload","setFile","expanded","setExpanded","acceptedFile","success","Accordion","AccordionSummary","expandIcon","ExpandMoreIcon","AccordionDetails","onDelete","handleUploadClick","FileReader","onload","binaryStr","readAsArrayBuffer","LinkButton","newTab","tooltip","wrappedButton","LinkField","shouldRender","OutlinedInput","paddingRight","borderColor","borderWidth","readOnly","inputComponent","LinnWeekPicker","selectedDate","setWeekStartDate","pickersDayProps","start","end","Navigation","sections","username","myStuff","notifications","handleSignOut","setSelected","anchorEl","setAnchorEl","hoveredSectionId","setHoveredSectionId","enqueueSnackbar","closeSnackbar","useSnackbar","root","tabLabel","snackbarNew","background","snackbarSeen","tab","toolbar","paddingLeft","tabs","flexGrow","appBar","icons","handleClose","handleKeyDown","menuIds","searchOpen","hoveredTabIndex","tabsValue","handleClick","currentTarget","actions","localStorage","setItem","markNotificationSeen","noNotifications","queueNotifications","preventDuplicate","ContentProps","getItem","ClickAwayListener","onClickAway","AppBar","Toolbar","Tabs","scrollButtons","indicatorColor","textColor","Tab","AccountCircle","Badge","badgeContent","Notifications","Menu","Boolean","MenuItem","groups","NotFound","OnOffSwitch","Switch","Page","requestErrors","showRequestErrors","showBreadcrumbs","defaultAppTitle","square","PermissionIndicator","hasPermission","hasPermissionMessage","noPermissionMessage","pullRightStyle","ModeEditIcon","EditOffIcon","PrevNextButtons","goPrev","goNext","nextResult","prevResult","startIcon","ArrowLeftIcon","endIcon","ArrowRightIcon","ReportDataGrids","reportData","titlesVariant","repeatHeaders","perReportExport","SelectedItemsList","removeItem","ListItemText","DeleteIcon","ComposedComponent","HOC","initialise","itemId","useDebounceValue","delay","debouncedValue","setDebouncedValue","isDebouncing","setIsDebouncing","handler","useDelete","deleteResult","setDeleteResult","useEditableSearchGrid","setRows","getRowId","onRowChange","groupValidations","apiRef","useGridApiRef","searchDialog","setSearchDialog","forRow","forColumn","pendingFocusRef","searchColumns","invalidClassForField","failing","g","fields","invalidClassName","searchRenderCell","GridSearchIcon","flexShrink","decoratedColumns","editable","searchDialogs","_c$searchResults","transition","onExited","pending","api","setCellFocus","rowId","focusCell","_api$getCellElement","getCellElement","requestAnimationFrame","resultIdField","searchLoading","writeResultToRow","column","_column$updateFields","currentRow","updated","pad","updateFields","handleCellKeyDown","colDef","_apiRef$current$getCe","inputEl","querySelector","getCellMode","stopCellEditMode","ignoreModifications","defaultMuiPrevented","rowIds","gridExpandedSortedRowIdsSelector","visibleColumns","getVisibleColumns","rowIndex","findIndex","colIndex","getColumnIndex","atLastCell","shiftKey","atFirstCell","scrollToIndexes","processRowUpdate","newRow","oldRow","changedField","padSearchCodes","gridSx","useInitialise","hasFetched","setHasFetched","usePost","redirectOnSuccess","postResult","setPostResult","useNavigate","abortControllerRef","clearPostResult","abort","controller","AbortController","signal","log","cancelRequest","usePreviousNextNavigation","urlBuilder","navigateFunction","idStyle","idFieldName","useLocation","URLSearchParams","useParams","currentResult","usePut","putResult","setPutResult","clearPutResult","useSearch","idFieldKey","nameFieldKey","descriptionFieldKey","itemsArray","_s$nameFieldKey","_s$nameFieldKey2","clear","useSignIn","hasTriedSignin","setHasTriedSignin","hasAuthParams","isAuthenticated","activeNavigator","signinRedirect","sessionStorage","useUserProfile","_auth$user$profile","_auth$user$profile$em","_auth$user$profile$em2","_auth$user2$profile","_auth$user3","_auth$user3$profile","userNumber","profile","employee","userName","preferred_username"],"mappings":"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","x_google_ignoreList":[10,19,20,21,22,23,24,25,26,27,28,29,30,31,32]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/components/Loading.js","../src/components/Breadcrumbs.js","../src/components/SaveBackCancelButtons.js","../src/components/Dropdown.js","../src/components/ErrorCard.js","../src/components/CheckboxWithLabel.js","../src/components/InputField.js","../src/components/Page.js","../src/components/EntityList.js","../src/components/SnackbarMessage.js","../node_modules/moment/moment.js","../src/components/SearchInputField.js","../src/components/SearchIcon.js","../src/utilities/index.js","../src/components/Panel.js","../src/components/SearchPanel.js","../src/themes/linnTheme.js","../src/utilities/dateUtilities.js","../src/components/LinnWeekPicker.js","../node_modules/style-inject/dist/style-inject.es.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/file-selector/dist/es2015/file.js","../node_modules/file-selector/dist/es2015/file-selector.js","../node_modules/attr-accept/dist/es/index.js","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","../src/components/Search.js","../src/components/ReportDataGrid.js","../src/components/LinkField.js","../src/hooks/useGet.js","../src/components/AutoComplete.js","../src/hooks/useEditableSearchGrid.js","../src/components/AddressUtility.js","../src/components/BackButton.js","../src/components/ConfirmDialog.js","../src/components/CreateButton.js","../src/components/DatePicker.js","../src/components/DateTimePicker.js","../src/components/ExportButton.js","../src/components/FileUploader.js","../src/components/LedgerPeriodAutoComplete.js","../src/components/LinkButton.js","../src/components/Navigation.js","../src/components/NotFound.js","../src/components/OnOffSwitch.js","../src/components/PermissionIndicator.js","../src/components/PrevNextButtons.js","../src/components/ReportDataGrids.js","../src/components/SelectedItemsList.js","../src/components/common/initialiseOnMount.js","../src/hooks/useDebounceValue.js","../src/hooks/useDelete.js","../src/hooks/useInitialise.js","../src/hooks/usePost.js","../src/hooks/usePreviousNextNavigation.js","../src/hooks/usePut.js","../src/hooks/useSearch.js","../src/hooks/useSignIn.js","../src/hooks/useUserProfile.js"],"sourcesContent":["import React from 'react';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport default function Loading() {\n return (\n <Box\n sx={{\n textAlign: 'center',\n margin: theme => theme.spacing(4),\n height: '40px'\n }}\n >\n <CircularProgress />\n </Box>\n );\n}\n","import React from 'react';\nimport Typography from '@mui/material/Typography';\nimport Link from '@mui/material/Link';\n\nfunction Breadcrumbs({\n navigate,\n rootPathLength = 2,\n homeUrl = 'https://app.linn.co.uk',\n location\n}) {\n let path = location.pathname;\n if (path.endsWith('/')) {\n path = path.substring(0, path.length - 1);\n }\n\n const crumbs = path\n .split('/')\n .filter(x => x !== 'report')\n .reduce((sofar, crumb, i, list) => {\n const currentPath = list.slice(0, i + 1).join('/') || '/';\n const handleClick = e => {\n if (list.length > rootPathLength) {\n e.preventDefault();\n navigate(currentPath);\n }\n };\n\n return crumb\n ? [\n ...sofar,\n {\n key: i,\n caption: crumb,\n href: currentPath,\n onClick: handleClick\n }\n ]\n : sofar;\n }, []);\n\n return (\n <span style={{ marginLeft: '20px' }}>\n <Link\n key=\"home\"\n href={homeUrl}\n variant=\"button\"\n sx={{\n '&:hover': {\n cursor: 'pointer'\n }\n }}\n >\n HOME\n </Link>\n <> {' / '} </>\n {crumbs.map((crumb, index) => {\n if (index < crumbs.length - 1) {\n return (\n <span key={index}>\n <Link\n key={crumb.href}\n href={crumb.href}\n variant=\"button\"\n sx={{\n '&:hover': {\n cursor: 'pointer'\n }\n }}\n onClick={crumb.onClick}\n >\n {crumb.caption}\n </Link>\n <> {' / '} </>\n </span>\n );\n }\n return (\n <Typography display=\"inline\" variant=\"button\" key={index}>\n {crumb.caption}\n </Typography>\n );\n })}\n </span>\n );\n}\n\nexport default Breadcrumbs;\n","import React from 'react';\n\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\n\nfunction SaveBackCancelButtons({\n saveClick,\n cancelClick,\n saveDisabled = false,\n backClick,\n showBackButton = true,\n editStatus = null,\n saveButtonLabelText = 'Save'\n}) {\n const editing = editStatus === 'edit' || editStatus === 'create';\n\n const handleClick = () => {\n if (saveDisabled && !editing) {\n backClick();\n } else {\n cancelClick();\n }\n };\n\n return (\n <Box sx={{ float: 'right' }}>\n {(!saveDisabled || showBackButton || editing) && (\n <Button\n id=\"cancel-button\"\n onClick={() => handleClick()}\n variant=\"outlined\"\n sx={{ marginRight: theme => theme.spacing(1) }}\n >\n {saveDisabled && !editing ? 'Back' : 'Cancel'}\n </Button>\n )}\n <Button\n id=\"save-button\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => saveClick()}\n disabled={saveDisabled}\n >\n {saveButtonLabelText}\n </Button>\n </Box>\n );\n}\n\nexport default SaveBackCancelButtons;\n","import React from 'react';\nimport TextField from '@mui/material/TextField';\nimport InputLabel from '@mui/material/InputLabel';\n\nconst hasValue = val => val || val === 0;\n\nconst getValue = val => (hasValue(val) ? val : '');\n\nconst hasDisplayText = items => items.some(item => item.displayText || item.displayText === '');\n\nconst getOptions = (items, allowNoValue, optionsLoading = false) => {\n if (optionsLoading) return ['loading...'];\n const options = items ? [...items] : [];\n if (allowNoValue) {\n if (hasDisplayText(items)) {\n options.push({ id: '', displayText: '' });\n } else {\n options.push('');\n }\n }\n return options;\n};\n\nconst getSelectableItems = (items, currentValue) => {\n if (!items) return items;\n const filtered = items.filter(item => item.hideFromEdit !== 'Y');\n // If the current value is a hidden item, include it so it still displays correctly\n const currentItem = items.find(\n item => (item.id !== undefined ? item.id : item) === currentValue\n );\n if (currentItem && currentItem.hideFromEdit === 'Y') {\n return [currentItem, ...filtered];\n }\n return filtered;\n};\n\nfunction Dropdown({\n onChange,\n optionsLoading = false,\n propertyName,\n required = false,\n disabled = false,\n label = '',\n items = [],\n allowNoValue = true,\n value = '',\n helperText = '',\n fullWidth = false,\n adornment = '',\n type = 'text',\n error = false,\n margin = 'dense',\n autoFocus = false\n}) {\n const change = e => {\n const newValue = e.target.value;\n\n let val;\n\n if (type === 'number') {\n val = hasValue(newValue) ? parseFloat(newValue) : null;\n } else {\n val = hasValue(newValue) ? newValue : '';\n }\n\n onChange(propertyName, val);\n };\n\n const selectableItems = getSelectableItems(items, value);\n\n return (\n <>\n <InputLabel\n sx={{\n fontSize: theme => theme.typography.fontSize,\n color: error ? theme => theme.palette.error.main : 'inherit',\n '& .MuiInputLabel-asterisk': {\n color: theme => theme.palette.error.main\n }\n }}\n required={required}\n error={error}\n htmlFor={propertyName}\n >\n {label}\n </InputLabel>\n <TextField\n sx={{\n paddingTop: 0,\n marginTop: theme => theme.spacing(1)\n }}\n autoFocus={autoFocus}\n error={error}\n id={propertyName}\n type={type}\n select\n adornment={adornment}\n disabled={disabled}\n fullWidth={fullWidth}\n value={getValue(value)}\n onChange={e => change(e)}\n slotProps={{\n select: {\n native: true\n },\n formHelperText: {\n sx: {\n color: error ? theme => theme.palette.error.main : 'inherit',\n '&.Mui-required': {\n color: theme => theme.palette.error.main\n }\n }\n }\n }}\n size=\"small\"\n helperText={helperText}\n margin={margin}\n variant=\"outlined\"\n required={required}\n >\n {hasDisplayText(selectableItems)\n ? getOptions(selectableItems, allowNoValue, optionsLoading).map(item => (\n <option key={item.id} value={item.id}>\n {item.displayText}\n </option>\n ))\n : getOptions(selectableItems, allowNoValue, optionsLoading).map(item => (\n <option key={item} value={item}>\n {item}\n </option>\n ))}\n </TextField>\n </>\n );\n}\n\nexport default Dropdown;\n","import React from 'react';\nimport Typography from '@mui/material/Typography';\nimport Card from '@mui/material/Card';\nimport Error from '@mui/icons-material/Error';\n\nfunction ErrorCard({ errorMessage, detailLines = [] }) {\n return (\n <Card\n sx={{\n width: '50%',\n margin: '0 auto',\n padding: theme => theme.spacing(2),\n backgroundColor: theme => theme.palette.error.light\n }}\n >\n <Error sx={{ color: theme => theme.palette.error.dark, float: 'right' }} />\n\n <Typography align=\"center\">{errorMessage}</Typography>\n <div>\n {detailLines?.map(d => (\n <Typography\n key={d.descriptor}\n align=\"center\"\n >{`${d.descriptor} - ${d.message}`}</Typography>\n ))}\n </div>\n </Card>\n );\n}\n\nexport default ErrorCard;\n","import React from 'react';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\n\nconst CheckboxWithLabel = ({\n checked = false,\n color = 'primary',\n label = '',\n onChange,\n sx = {}\n}) => (\n <FormControlLabel\n label={label}\n sx={{\n width: '100%',\n fontSize: 14,\n ...sx\n }}\n control={<Checkbox checked={checked} onChange={onChange} color={color} />}\n />\n);\n\nexport default CheckboxWithLabel;\n","import React, { useRef, useEffect, useState } from 'react';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport TextField from '@mui/material/TextField';\nimport InputLabel from '@mui/material/InputLabel';\n\nconst hasValue = val => val || val === 0;\nconst getValue = val => (hasValue(val) ? val : '');\n\nfunction InputField({\n onChange = null,\n propertyName,\n type = 'text',\n adornment = '',\n disabled = false,\n error = false,\n fullWidth = false,\n helperText = '',\n label = '',\n margin = 'dense',\n maxLength = null,\n rows = null,\n name = '',\n placeholder = '',\n required = false,\n value = '',\n decimalPlaces = null,\n textFieldProps = null,\n autoFocus = false,\n onErrorStateChange = null,\n visible = true,\n autoComplete = 'off'\n}) {\n const inputRef = useRef(null);\n const [inErrorState, setInErrorState] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n\n useEffect(() => {\n setTimeout(() => {\n if (!autoFocus || !inputRef.current || !visible) return;\n inputRef.current.focus();\n }, 100);\n }, [autoFocus, visible]);\n\n useEffect(() => {\n setInErrorState(error);\n }, [error]);\n\n const change = e => {\n const newValue = e.target.value;\n\n let val = newValue;\n\n if (type === 'number') {\n val = hasValue(newValue) ? parseFloat(newValue) : null;\n\n if (\n val &&\n decimalPlaces &&\n newValue.indexOf('.') < newValue.length - decimalPlaces &&\n newValue.indexOf('.') !== -1\n ) {\n val = parseFloat(newValue.slice(0, newValue.indexOf('.') + decimalPlaces + 1));\n }\n } else if (maxLength && newValue?.length > maxLength) {\n setInErrorState(true);\n setErrorMessage(`MAX LENGTH (${maxLength}) EXCEEDED`);\n if (onErrorStateChange) {\n onErrorStateChange(true);\n }\n } else if (maxLength && newValue?.length <= maxLength) {\n setInErrorState(false);\n if (onErrorStateChange) {\n onErrorStateChange(false);\n }\n setErrorMessage('');\n }\n\n onChange(propertyName, val);\n };\n\n return (\n <>\n <InputLabel\n sx={{\n fontSize: theme => theme.typography.fontSize,\n color: inErrorState ? theme => theme.palette.error.main : 'inherit',\n '& .MuiInputLabel-asterisk': {\n color: theme => theme.palette.error.main\n }\n }}\n required={required}\n error={inErrorState}\n htmlFor={propertyName}\n >\n {label}\n </InputLabel>\n <TextField\n sx={{\n paddingTop: 0,\n marginTop: theme => theme.spacing(1)\n }}\n disabled={disabled}\n error={inErrorState}\n fullWidth={fullWidth}\n helperText={inErrorState ? errorMessage : helperText}\n margin={margin}\n multiline={rows > 0}\n name={name}\n id={propertyName}\n placeholder={placeholder}\n required={required}\n size=\"small\"\n rows={rows}\n inputRef={inputRef}\n onWheel={() => {\n if (type === 'number') {\n inputRef.current.blur();\n }\n }}\n type={type}\n autoComplete={autoComplete}\n value={getValue(value)}\n onChange={e => change(e)}\n slotProps={{\n input: {\n startAdornment: adornment ? (\n <InputAdornment position=\"start\">{adornment}</InputAdornment>\n ) : null\n },\n formHelperText: {\n sx: {\n color: inErrorState\n ? theme => theme.palette.error.main\n : theme => theme.palette.text.primary\n }\n }\n }}\n onInput={e => {\n if (type === 'number' && maxLength) {\n e.target.value = e.target.value.slice(0, maxLength);\n }\n }}\n variant=\"outlined\"\n {...textFieldProps}\n />\n </>\n );\n}\n\nexport default InputField;\n","import React, { useEffect } from 'react';\nimport { useSnackbar } from 'notistack';\nimport { Paper } from '@mui/material';\nimport Grid from '@mui/material/Grid';\nimport Breadcrumbs from './Breadcrumbs.js';\n\nconst pageWidth = {\n xs: 4,\n s: 6,\n m: 8,\n l: 10,\n xl: 12\n};\n\nconst columnWidth = {\n xs: 4,\n s: 3,\n m: 2,\n l: 1,\n xl: 0\n};\n\nfunction Page({\n children,\n navigate = null,\n location = null,\n width = 'l',\n requestErrors = [],\n showRequestErrors = false,\n homeUrl = null,\n showBreadcrumbs = true,\n title = null,\n defaultAppTitle = null\n}) {\n const { enqueueSnackbar } = useSnackbar();\n\n useEffect(() => {\n if (requestErrors && showRequestErrors) {\n requestErrors.forEach(t => {\n enqueueSnackbar(`${t.message} - ${t.type}`, {\n variant: 'error',\n preventDuplicate: true\n });\n });\n }\n }, [requestErrors, enqueueSnackbar, showRequestErrors]);\n\n useEffect(() => {\n if (title) {\n document.title = title;\n }\n return () => {\n if (defaultAppTitle) {\n document.title = defaultAppTitle;\n }\n };\n }, [title, defaultAppTitle]);\n\n return (\n <Grid container spacing={3}>\n <Grid size={12}>\n {showBreadcrumbs && (\n <Breadcrumbs navigate={navigate} homeUrl={homeUrl} location={location} />\n )}\n </Grid>\n <Grid size={columnWidth[width]} />\n <Grid size={pageWidth[width]}>\n <Paper sx={{ padding: 4 }} square>\n {children}\n </Paper>\n </Grid>\n\n <Grid size={columnWidth[width]} />\n </Grid>\n );\n}\n\nexport default Page;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\n\nconst getListItemText = (entity, entityid, descriptionFieldName) =>\n descriptionFieldName\n ? `${entity[entityid]} - ${entity[descriptionFieldName]}`\n : entity[entityid];\n\nfunction EntityList({\n title = '',\n entityList,\n entityId,\n descriptionFieldName = null,\n hasExternalLinks = false\n}) {\n const Component = hasExternalLinks ? 'a' : Link;\n return (\n <>\n <Typography variant=\"h4\">{title}</Typography>\n <List>\n {entityList.map(entity => (\n <ListItem\n key={entity[entityId]}\n button\n component={Component}\n to={entity.href}\n href={entity.href}\n >\n <Typography color=\"primary\" variant=\"subtitle2\">\n {getListItemText(entity, entityId, descriptionFieldName)}\n </Typography>\n </ListItem>\n ))}\n </List>\n </>\n );\n}\n\nexport default EntityList;\n","import React from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport Snackbar from '@mui/material/Snackbar';\nimport CloseIcon from '@mui/icons-material/Close';\n\nfunction SnackbarMessage({ message, visible = false, onClose, timeOut = 3000 }) {\n return (\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n slotProps={{\n content: {\n sx: {\n backgroundColor: theme => theme.palette.primary.main\n }\n }\n }}\n open={visible}\n autoHideDuration={timeOut}\n onClose={() => onClose(false)}\n message={message}\n action={\n <IconButton\n aria-label=\"Close\"\n color=\"inherit\"\n onClick={() => onClose(false)}\n size=\"large\"\n >\n <CloseIcon />\n </IconButton>\n }\n />\n );\n}\n\nexport default SnackbarMessage;\n","//! moment.js\n//! version : 2.31.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 arrLen = arr.length;\n for (i = 0; i < arrLen; ++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 invalidOffset: 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$2(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidOffset &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\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 return m._isValid;\n }\n\n function createInvalid$1(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,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\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 (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; 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 argLen = arguments.length;\n for (i = 0; i < argLen; 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' + new Error().stack);\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 var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\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 date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\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 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 =\n /(\\[[^\\[]*\\])|(\\\\e)|(\\\\)?(eHHmm|[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 var cacheKey = '$' + format;\n if (!hasOwnProp(formatFunctions, cacheKey)) {\n formatFunctions[cacheKey] = makeFormatFunction(format);\n }\n\n return formatFunctions[cacheKey](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 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 =\n /[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 match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\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(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\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 var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\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 tokenLen = token.length;\n for (i = 0; i < tokenLen; 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 function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\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 // 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 // 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 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$2(this, unit);\n }\n };\n }\n\n function get$2(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\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 prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; 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 function mod$1(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$1(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 // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\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 =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord,\n monthsParseProperties = [\n 'monthsParse',\n 'longMonthsParse',\n 'shortMonthsParse',\n 'monthsRegex',\n 'monthsShortRegex',\n 'monthsStrictRegex',\n 'monthsShortStrictRegex',\n ];\n\n function clearMonthsParseCache(locale, config) {\n var i, prop;\n for (i = 0; i < monthsParseProperties.length; i++) {\n prop = monthsParseProperties[i];\n if (!hasOwnProp(config, prop)) {\n delete locale['_' + prop];\n }\n }\n }\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$1(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$1.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 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 var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\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$2(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 shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\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\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('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 addFormatToken('eHHmm', 0, 0, function () {\n return (\n '' +\n this.weekday() +\n zeroFill(this.hours(), 2) +\n zeroFill(this.minutes(), 2)\n );\n });\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('eHHmm', match5to6);\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 addWeekParseToken('eHHmm', function (input, week, config) {\n var weekdayEnd = input.length - 4;\n\n week.e = toInt(input.substr(0, weekdayEnd));\n config._a[HOUR] = toInt(input.substr(weekdayEnd, 2));\n config._a[MINUTE] = toInt(input.substr(weekdayEnd + 2));\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 =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\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 weekdaysParseProperties = [\n 'weekdaysParse',\n 'fullWeekdaysParse',\n 'shortWeekdaysParse',\n 'minWeekdaysParse',\n 'weekdaysRegex',\n 'weekdaysShortRegex',\n 'weekdaysMinRegex',\n 'weekdaysStrictRegex',\n 'weekdaysShortStrictRegex',\n 'weekdaysMinStrictRegex',\n ];\n\n function clearWeekdaysParseCache(locale, config) {\n var i, prop;\n for (i = 0; i < weekdaysParseProperties.length; i++) {\n prop = weekdaysParseProperties[i];\n if (!hasOwnProp(config, prop)) {\n delete locale['_' + prop];\n }\n }\n }\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(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.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\n var day = get$2(this, 'Day');\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 function set(config) {\n var prop, i;\n clearMonthsParseCache(this, config);\n clearWeekdaysParseCache(this, config);\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$1(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\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 formatCache = this._longDateFormatCache;\n\n if (format || !formatUpper) {\n return format;\n }\n\n if (\n formatCache &&\n formatCache[key] &&\n formatCache[key].formatUpper === formatUpper\n ) {\n return formatCache[key].format;\n }\n\n format = 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 if (!formatCache) {\n formatCache = this._longDateFormatCache = {};\n }\n formatCache[key] = {\n formatUpper: formatUpper,\n format: format,\n };\n return format;\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 relativeTimeWithoutPostformat(\n number,\n withoutSuffix,\n string,\n isFuture\n ) {\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 relativeTime$1(number, withoutSuffix, string, isFuture) {\n return this.postformat(\n relativeTimeWithoutPostformat.call(\n this,\n number,\n withoutSuffix,\n string,\n isFuture\n )\n );\n }\n\n function pastFutureWithoutPostformat(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 function pastFuture(diff, output) {\n return this.postformat(\n pastFutureWithoutPostformat.call(this, diff, output)\n );\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 weekOfYearFromDayOfYear(year, dayOfYear, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n week = Math.floor((dayOfYear - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = year - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(year, dow, doy)) {\n resWeek = week - weeksInYear(year, dow, doy);\n resYear = year + 1;\n } else {\n resYear = year;\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n return weekOfYearFromDayOfYear(mom.year(), mom.dayOfYear(), dow, doy);\n }\n\n function weekOfYearFromDate(year, month, date, dow, doy) {\n var dayOfYear =\n Math.round(\n (createUTCDate(year, month, date) - createUTCDate(year, 0, 1)) /\n 864e5\n ) + 1;\n\n return weekOfYearFromDayOfYear(year, dayOfYear, dow, doy);\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 // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\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 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 // 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, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\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 isLocaleNameSane(name) {\n // Only canonical locale module names are safe to append to the require path.\n return typeof name === 'string' && /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name);\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire,\n normalizedName;\n\n // Preserve exact custom locale names before trying the canonical built-in name.\n // Use hasOwnProp rather than a plain lookup so that names like \"__proto__\",\n // \"constructor\", or \"prototype\" can't resolve to an inherited Object.prototype\n // property instead of a real (or missing) locale entry.\n if (hasOwnProp(locales, name)) {\n return locales[name];\n }\n\n normalizedName = normalizeLocale(name);\n if (hasOwnProp(locales, normalizedName)) {\n return locales[normalizedName];\n }\n\n // TODO: Find a better way to register and load all the locales in Node\n if (\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(normalizedName)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + normalizedName);\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[normalizedName] = null; // null means not found\n }\n }\n if (hasOwnProp(locales, normalizedName)) {\n return locales[normalizedName];\n }\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 var locale,\n tmpLocale = loadLocale(name),\n parentConfig = baseConfig;\n\n if (tmpLocale != null) {\n name = tmpLocale._abbr;\n }\n\n if (config != null) {\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 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 =\n /^\\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 =\n /^\\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 =\n /^(?:(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 isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; 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 = isoTimesLen; 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. Please refer to 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, now, forWeek) {\n var hadWeekContext = Object.prototype.hasOwnProperty.call(\n config,\n '_isDefaultDatePartsForWeek'\n ),\n weekContext = config._isDefaultDatePartsForWeek;\n\n // hooks is actually the exported moment object\n config._isDefaultDatePartsForWeek = !!forWeek;\n try {\n return hooks._getDefaultDateParts(config, now, forWeek);\n } finally {\n if (hadWeekContext) {\n config._isDefaultDatePartsForWeek = weekContext;\n } else {\n delete config._isDefaultDatePartsForWeek;\n }\n }\n }\n\n function currentDateNow(config) {\n var now = config._defaultDatePartsNow;\n\n if (!now) {\n return hooks.now();\n }\n if (!now.hasValue) {\n now.value = hooks.now();\n now.hasValue = true;\n }\n return now.value;\n }\n\n // Internal hook for extensions that supply omitted calendar fields.\n function getDefaultDateParts(config, now, forWeek) {\n var useWeekDefaults = forWeek || config._isDefaultDatePartsForWeek,\n nowValue = useWeekDefaults ? createLocal(now) : new Date(now);\n if (useWeekDefaults) {\n return [nowValue.year(), nowValue.month(), nowValue.date()];\n }\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 hooks._getDefaultDateParts = getDefaultDateParts;\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 now,\n currentDate,\n expectedWeekday,\n yearToUse,\n dateIsDefaulted;\n\n if (config._d) {\n return;\n }\n\n if (\n config._a[YEAR] == null ||\n config._a[MONTH] == null ||\n config._a[DATE] == null\n ) {\n now = currentDateNow(config);\n currentDate = currentDateArray(config, now);\n }\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, currentDateArray(config, now, true));\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse =\n config._a[YEAR] != null ? 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 dateIsDefaulted =\n config._a[YEAR] == null ||\n config._a[MONTH] == null ||\n config._a[DATE] == null;\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 !dateIsDefaulted &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config, currentDate) {\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 weekOfYearFromDate(\n currentDate[YEAR],\n currentDate[MONTH],\n currentDate[DATE],\n 1,\n 4\n ).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 = weekOfYearFromDate(\n currentDate[YEAR],\n currentDate[MONTH],\n currentDate[DATE],\n dow,\n doy\n );\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 tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; 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 defaultDatePartsNow = {},\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._defaultDatePartsNow = defaultDatePartsNow;\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid$2(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$1({ 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$2(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$1();\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$1();\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 for (i = 0; i < moments.length; ++i) {\n if (isMoment(moments[i])) {\n res = moments[i];\n break;\n }\n }\n if (!res) {\n return createInvalid$1();\n }\n for (++i; i < moments.length; ++i) {\n if (\n isMoment(moments[i]) &&\n (!moments[i].isValid() || moments[i][fn](res))\n ) {\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 orderLen = ordering.length;\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 < orderLen; ++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() {\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 (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 var offset = offsetFromString(matchShortOffset, input);\n config._useUTC = true;\n config._tzm = offset;\n if (offset === null) {\n getParsingFlags(config).invalidOffset = input;\n }\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 if (\n toInt(parts[2]) > 59 ||\n (parts[0] === '+' ? minutes > 14 * 60 : minutes > 12 * 60)\n ) {\n return null;\n }\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$1(\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 =\n /^(-|\\+)?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;\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$1(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract$1(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$2(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get$2(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$1 = createAdder(1, 'add'),\n subtract$1 = 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 propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; 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(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else 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$1() {\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$1(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(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(\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(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod(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(\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(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod(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$1() {\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() {\n return isValid$2(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 ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\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\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.clone().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.clone().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.clone().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.clone().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 erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\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 // 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(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\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() + this.localeData()._week.dow,\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 // 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 // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\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 // 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 // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\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 // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\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 // 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$2 = Moment.prototype;\n\n proto$2.add = add$1;\n proto$2.calendar = calendar;\n proto$2.clone = clone$1;\n proto$2.diff = diff;\n proto$2.endOf = endOf;\n proto$2.format = format;\n proto$2.from = from;\n proto$2.fromNow = fromNow;\n proto$2.to = to;\n proto$2.toNow = toNow;\n proto$2.get = stringGet;\n proto$2.invalidAt = invalidAt;\n proto$2.isAfter = isAfter;\n proto$2.isBefore = isBefore;\n proto$2.isBetween = isBetween;\n proto$2.isSame = isSame;\n proto$2.isSameOrAfter = isSameOrAfter;\n proto$2.isSameOrBefore = isSameOrBefore;\n proto$2.isValid = isValid;\n proto$2.lang = lang;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n proto$2.max = prototypeMax;\n proto$2.min = prototypeMin;\n proto$2.parsingFlags = parsingFlags;\n proto$2.set = stringSet;\n proto$2.startOf = startOf;\n proto$2.subtract = subtract$1;\n proto$2.toArray = toArray;\n proto$2.toObject = toObject;\n proto$2.toDate = toDate;\n proto$2.toISOString = toISOString$1;\n proto$2.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto$2[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto$2.toJSON = toJSON;\n proto$2.toString = toString;\n proto$2.unix = unix;\n proto$2.valueOf = valueOf$1;\n proto$2.creationData = creationData;\n proto$2.eraName = getEraName;\n proto$2.eraNarrow = getEraNarrow;\n proto$2.eraAbbr = getEraAbbr;\n proto$2.eraYear = getEraYear;\n proto$2.year = getSetYear;\n proto$2.isLeapYear = getIsLeapYear;\n proto$2.weekYear = getSetWeekYear;\n proto$2.isoWeekYear = getSetISOWeekYear;\n proto$2.quarter = proto$2.quarters = getSetQuarter;\n proto$2.month = getSetMonth;\n proto$2.daysInMonth = getDaysInMonth;\n proto$2.week = proto$2.weeks = getSetWeek;\n proto$2.isoWeek = proto$2.isoWeeks = getSetISOWeek;\n proto$2.weeksInYear = getWeeksInYear;\n proto$2.weeksInWeekYear = getWeeksInWeekYear;\n proto$2.isoWeeksInYear = getISOWeeksInYear;\n proto$2.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto$2.date = getSetDayOfMonth;\n proto$2.day = proto$2.days = getSetDayOfWeek;\n proto$2.weekday = getSetLocaleDayOfWeek;\n proto$2.isoWeekday = getSetISODayOfWeek;\n proto$2.dayOfYear = getSetDayOfYear;\n proto$2.hour = proto$2.hours = getSetHour;\n proto$2.minute = proto$2.minutes = getSetMinute;\n proto$2.second = proto$2.seconds = getSetSecond;\n proto$2.millisecond = proto$2.milliseconds = getSetMillisecond;\n proto$2.utcOffset = getSetOffset;\n proto$2.utc = setOffsetToUTC;\n proto$2.local = setOffsetToLocal;\n proto$2.parseZone = setOffsetToParsedOffset;\n proto$2.hasAlignedHourOffset = hasAlignedHourOffset;\n proto$2.isDST = isDaylightSavingTime;\n proto$2.isLocal = isLocal;\n proto$2.isUtcOffset = isUtcOffset;\n proto$2.isUtc = isUtc;\n proto$2.isUTC = isUtc;\n proto$2.zoneAbbr = getZoneAbbr;\n proto$2.zoneName = getZoneName;\n proto$2.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto$2.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto$2.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto$2.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto$2.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$1;\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$1;\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$1() {\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(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(input, value) {\n return addSubtract(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract(input, value) {\n return addSubtract(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 (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\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 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 valueOf = asMilliseconds;\n\n function clone() {\n return createDuration(this);\n }\n\n function get(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 relativeTimeWithoutPostformat.call(\n locale,\n number || 1,\n !!withoutSuffix,\n string,\n isFuture\n );\n }\n\n function relativeTime(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 = extend(extend({}, 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(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = pastFutureWithoutPostformat.call(locale, +this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString() {\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(this._milliseconds) / 1000,\n days = abs(this._days),\n months = abs(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 = Duration.prototype;\n\n proto.isValid = isValid$1;\n proto.abs = abs$1;\n proto.add = add;\n proto.subtract = subtract;\n proto.as = as;\n proto.asMilliseconds = asMilliseconds;\n proto.asSeconds = asSeconds;\n proto.asMinutes = asMinutes;\n proto.asHours = asHours;\n proto.asDays = asDays;\n proto.asWeeks = asWeeks;\n proto.asMonths = asMonths;\n proto.asQuarters = asQuarters;\n proto.asYears = asYears;\n proto.valueOf = valueOf;\n proto._bubble = bubble;\n proto.clone = clone;\n proto.get = get;\n proto.milliseconds = milliseconds;\n proto.seconds = seconds;\n proto.minutes = minutes;\n proto.hours = hours;\n proto.days = days;\n proto.weeks = weeks;\n proto.months = months;\n proto.years = years;\n proto.humanize = humanize;\n proto.toISOString = toISOString;\n proto.toString = toISOString;\n proto.toJSON = toISOString;\n proto.locale = locale;\n proto.localeData = localeData;\n\n proto.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString\n );\n proto.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.31.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto$2;\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$1;\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$2;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","import React from 'react';\n\nimport InputField from './InputField.js';\nimport SearchIcon from './SearchIcon.js';\n\nfunction SearchInputField({ autoFocus = false, propertyName, ...rest }) {\n return (\n <InputField\n adornment={SearchIcon()}\n autoFocus={autoFocus}\n propertyName={propertyName}\n {...rest}\n />\n );\n}\n\nexport default SearchInputField;\n","import React from 'react';\n\nimport { IconButton } from '@mui/material';\n\nconst SearchIcon = onClick => (\n <IconButton onClick={() => (onClick ? onClick() : false)} size=\"large\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" />\n </svg>\n </IconButton>\n);\n\nexport default SearchIcon;\n","const utilities = {\n getHref: (itemWithLinks, rel) => {\n if (itemWithLinks && itemWithLinks.links && itemWithLinks.links.length > 0) {\n const link = itemWithLinks.links.find(l => l.rel === rel);\n\n return link ? link.href : null;\n }\n\n return null;\n },\n\n getSelfHref: itemWithLinks => utilities.getHref(itemWithLinks, 'self'),\n\n sortList: list =>\n list.slice().sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n }),\n sortEntityList: (list, property) =>\n list.slice().sort((a, b) => {\n if (a[property] < b[property]) {\n return -1;\n }\n if (a[property] > b[property]) {\n return 1;\n }\n return 0;\n })\n};\n\nexport default utilities;\n","import React from 'react';\nimport Paper from '@mui/material/Paper';\nimport Grid from '@mui/material/Grid';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Close from '@mui/icons-material/Close';\n\nfunction Panel({ section, close }) {\n const { columns } = section;\n\n return (\n <Paper\n sx={{\n backgroundColor: '#f5f5f5',\n position: 'fixed',\n zIndex: 1000,\n paddingTop: '80px',\n width: '100%',\n overflow: 'auto',\n height: '100vh'\n }}\n >\n <Button\n onClick={close}\n color=\"secondary\"\n sx={{\n marginRight: '10px',\n marginTop: '10px',\n float: 'right',\n top: 0,\n right: 0\n }}\n >\n <Close />\n </Button>\n <Grid container>\n {columns.map((col, i) => (\n <Grid size={{ xs: 12, md: 6, lg: 3, xl: 3 }} key={i}>\n {col.categories\n .filter(e => e.items.filter(item => item.showInMenu).length > 0)\n .map(category => (\n <List key={category.title} dense>\n <ListItem\n sx={{\n paddingTop: '0px !important',\n paddingBottom: '0px !important'\n }}\n >\n <Typography variant=\"button\" gutterBottom>\n {category.title.replace('&amp;', '&')}\n </Typography>\n </ListItem>\n {category.items.map(\n entry =>\n entry.showInMenu && (\n <a\n href={entry.href}\n key={entry.href}\n style={{ textDecoration: 'none' }}\n >\n <ListItem\n sx={{\n paddingTop: 0,\n paddingBottom: 0,\n margin: 0\n }}\n >\n <Typography\n sx={{ margin: 0, lineHeight: 1.8 }}\n variant=\"overline\"\n color=\"primary\"\n >\n {entry.title}\n </Typography>\n </ListItem>\n </a>\n )\n )}\n </List>\n ))}\n </Grid>\n ))}\n <Grid size={12}>\n <a href={`/${section.id}`}>\n <Button\n onClick={close}\n color=\"primary\"\n sx={{\n marginRight: '10px',\n marginBottom: '10px',\n float: 'right'\n }}\n >\n SHOW ALL OPTIONS...\n </Button>\n </a>\n </Grid>\n </Grid>\n </Paper>\n );\n}\n\nexport default Panel;\n","import React, { useMemo, useState } from 'react';\nimport Paper from '@mui/material/Paper';\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Close from '@mui/icons-material/Close';\nimport List from '@mui/material/List';\nimport SearchInputField from './SearchInputField.js';\n\nconst styles = {\n paper: {\n backgroundColor: '#f5f5f5',\n position: 'fixed',\n zIndex: 1000,\n paddingTop: '80px',\n width: '100%',\n overflow: 'auto',\n height: '100vh'\n },\n searchInputField: {\n float: 'right'\n }\n};\n\nfunction SearchPanel({ menu, close, onHoverSection = () => {} }) {\n const [searchTerm, setSearchTerm] = useState();\n\n const menuEntries = useMemo(\n () =>\n menu.flatMap(section =>\n section.columns.flatMap(col =>\n col.categories.flatMap(category =>\n category.items.map(item => ({\n ...item,\n sectionId: section.id,\n breadcrumb:\n `${section.title} > ${category.title} > ${item.title}`.replace(\n /&amp;/g,\n '&'\n )\n }))\n )\n )\n ),\n [menu]\n );\n\n const uniqueEntries = useMemo(\n () =>\n Object.values(\n menuEntries.reduce((uniques, entry) => {\n if (!uniques[entry.href]) {\n return { ...uniques, [entry.href]: entry };\n }\n return uniques;\n }, {})\n ),\n [menuEntries]\n );\n\n const handleFieldChange = (propertyName, newValue) => {\n setSearchTerm(newValue);\n };\n return (\n <Paper sx={styles.paper}>\n <Button\n onClick={close}\n color=\"secondary\"\n sx={{\n marginRight: '10px',\n marginTop: '10px',\n float: 'right',\n top: 0,\n right: 0\n }}\n >\n <Close />\n </Button>\n <Grid container>\n <Grid size={12} sm={6} md={4} lg={3} xl={3} justify-content=\"flex-end\">\n <SearchInputField\n value={searchTerm}\n onChange={handleFieldChange}\n textFieldProps={{\n autoFocus: true\n }}\n placeholder=\"start typing...\"\n />\n <List dense>\n {searchTerm?.length > 1 &&\n uniqueEntries\n .filter(\n e =>\n e.title.toLowerCase().includes(searchTerm.toLowerCase()) ||\n e.href.toLowerCase().includes(searchTerm.toLowerCase())\n )\n .map(entry => (\n <Box key={entry.href}>\n <a\n href={entry.href}\n style={{ textDecoration: 'none' }}\n onMouseEnter={() => onHoverSection(entry.sectionId)}\n onMouseLeave={() => onHoverSection(null)}\n onFocus={() => onHoverSection(entry.sectionId)}\n onBlur={() => onHoverSection(null)}\n >\n <ListItem\n sx={{\n paddingTop: 0,\n paddingBottom: 0,\n margin: 0,\n gap: '8px'\n }}\n >\n <Typography\n variant=\"overline\"\n color=\"primary\"\n sx={{ margin: 0, lineHeight: 1.8 }}\n >\n {entry.title}\n </Typography>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{ margin: 0, lineHeight: 1.8 }}\n >\n {entry.breadcrumb}\n </Typography>\n </ListItem>\n </a>\n </Box>\n ))}\n </List>\n </Grid>\n </Grid>\n </Paper>\n );\n}\n\nexport default SearchPanel;\n","import { createTheme } from '@mui/material/styles';\n\nconst linnTheme = createTheme();\n\nexport default linnTheme;\n","import moment from 'moment';\n\nexport function cloneDate(date) {\n return moment.isMoment(date) ? date.clone() : moment(date, 'MM-DD-YYYY');\n}\n\nexport function getWeekStartDate(date) {\n const dateClone = cloneDate(date);\n\n if (dateClone.day() === 6) {\n return dateClone.endOf('week');\n }\n\n return dateClone.startOf('week').subtract(1, 'days');\n}\n\nexport function getWeekEndDate(date) {\n const dateClone = cloneDate(date);\n\n if (dateClone.day() === 6) {\n return dateClone.endOf('week').add(6, 'days');\n }\n\n return dateClone.endOf('week').subtract(1, 'days');\n}\n","import React from 'react';\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\nimport { styled } from '@mui/material/styles';\nimport InputLabel from '@mui/material/InputLabel';\nimport moment from 'moment';\nimport { PickerDay } from '@mui/x-date-pickers/PickerDay';\n\nimport { getWeekStartDate, getWeekEndDate } from '../utilities/dateUtilities.js';\n\nconst CustomPickerDay = styled(PickerDay, {\n shouldForwardProp: prop =>\n prop !== 'dayIsBetween' && prop !== 'isFirstDay' && prop !== 'isLastDay'\n})(({ theme, dayIsBetween, isFirstDay, isLastDay }) => ({\n ...(dayIsBetween && {\n borderRadius: 0,\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.common.white,\n '&:hover, &:focus': {\n backgroundColor: theme.palette.primary.dark\n }\n }),\n ...(isFirstDay && {\n borderTopLeftRadius: '50%',\n borderBottomLeftRadius: '50%'\n }),\n ...(isLastDay && {\n borderTopRightRadius: '50%',\n borderBottomRightRadius: '50%'\n })\n}));\n\nexport default function LinnWeekPicker({\n selectedDate = new Date(),\n setWeekStartDate,\n propertyName = '',\n label = '',\n disabled = false,\n required = false\n}) {\n const handleChange = date => {\n setWeekStartDate(propertyName, getWeekStartDate(date));\n };\n\n const WeekPickerDay = pickersDayProps => {\n const { day: date } = pickersDayProps;\n if (!selectedDate) {\n return <PickerDay {...pickersDayProps} />;\n }\n\n const start = moment(getWeekStartDate(selectedDate));\n const end = moment(getWeekEndDate(selectedDate));\n\n const dayIsBetween = moment(date).isBetween(start, end, null, '[]');\n const isFirstDay = moment(date).isSame(start, 'day');\n const isLastDay = moment(date).isSame(end, 'day');\n\n return (\n <CustomPickerDay\n {...pickersDayProps}\n dayIsBetween={dayIsBetween}\n isFirstDay={isFirstDay}\n isLastDay={isLastDay}\n />\n );\n };\n\n return (\n <>\n {label && (\n <InputLabel required={required} sx={{ fontSize: '1rem', marginBottom: '8px' }}>\n {label}\n </InputLabel>\n )}\n <DatePicker\n disabled={disabled}\n value={selectedDate ? moment(selectedDate) : null}\n onChange={handleChange}\n format=\"DD/MM/YYYY\"\n slots={{ day: WeekPickerDay }}\n slotProps={{\n textField: {\n variant: 'outlined',\n fullWidth: true,\n size: 'small',\n sx: {\n mt: 1\n }\n }\n }}\n />\n </>\n );\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\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) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\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 printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\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}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\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 ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\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}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\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","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx, extraExtensions, ignoreCase) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n if (extraExtensions) {\n for (var extension in extraExtensions) {\n var suffix = path.slice(-extension.length);\n if (suffix === extension || ignoreCase && suffix.toLowerCase() === extension.toLowerCase()) {\n var output = extraExtensions[extension];\n return output === extension ? path : path.slice(0, -extension.length) + output;\n }\n }\n }\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export const COMMON_MIME_TYPES = new Map([\n // https://github.com/guzzle/psr7/blob/2d9260799e713f1c475d3c5fdc3d6561ff7441b2/src/MimeType.php\n ['1km', 'application/vnd.1000minds.decision-model+xml'],\n ['3dml', 'text/vnd.in3d.3dml'],\n ['3ds', 'image/x-3ds'],\n ['3g2', 'video/3gpp2'],\n ['3gp', 'video/3gp'],\n ['3gpp', 'video/3gpp'],\n ['3mf', 'model/3mf'],\n ['7z', 'application/x-7z-compressed'],\n ['7zip', 'application/x-7z-compressed'],\n ['123', 'application/vnd.lotus-1-2-3'],\n ['aab', 'application/x-authorware-bin'],\n ['aac', 'audio/x-acc'],\n ['aam', 'application/x-authorware-map'],\n ['aas', 'application/x-authorware-seg'],\n ['abw', 'application/x-abiword'],\n ['ac', 'application/vnd.nokia.n-gage.ac+xml'],\n ['ac3', 'audio/ac3'],\n ['acc', 'application/vnd.americandynamics.acc'],\n ['ace', 'application/x-ace-compressed'],\n ['acu', 'application/vnd.acucobol'],\n ['acutc', 'application/vnd.acucorp'],\n ['adp', 'audio/adpcm'],\n ['aep', 'application/vnd.audiograph'],\n ['afm', 'application/x-font-type1'],\n ['afp', 'application/vnd.ibm.modcap'],\n ['ahead', 'application/vnd.ahead.space'],\n ['ai', 'application/pdf'],\n ['aif', 'audio/x-aiff'],\n ['aifc', 'audio/x-aiff'],\n ['aiff', 'audio/x-aiff'],\n ['air', 'application/vnd.adobe.air-application-installer-package+zip'],\n ['ait', 'application/vnd.dvb.ait'],\n ['ami', 'application/vnd.amiga.ami'],\n ['amr', 'audio/amr'],\n ['apk', 'application/vnd.android.package-archive'],\n ['apng', 'image/apng'],\n ['appcache', 'text/cache-manifest'],\n ['application', 'application/x-ms-application'],\n ['apr', 'application/vnd.lotus-approach'],\n ['arc', 'application/x-freearc'],\n ['arj', 'application/x-arj'],\n ['asc', 'application/pgp-signature'],\n ['asf', 'video/x-ms-asf'],\n ['asm', 'text/x-asm'],\n ['aso', 'application/vnd.accpac.simply.aso'],\n ['asx', 'video/x-ms-asf'],\n ['atc', 'application/vnd.acucorp'],\n ['atom', 'application/atom+xml'],\n ['atomcat', 'application/atomcat+xml'],\n ['atomdeleted', 'application/atomdeleted+xml'],\n ['atomsvc', 'application/atomsvc+xml'],\n ['atx', 'application/vnd.antix.game-component'],\n ['au', 'audio/x-au'],\n ['avi', 'video/x-msvideo'],\n ['avif', 'image/avif'],\n ['aw', 'application/applixware'],\n ['azf', 'application/vnd.airzip.filesecure.azf'],\n ['azs', 'application/vnd.airzip.filesecure.azs'],\n ['azv', 'image/vnd.airzip.accelerator.azv'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['b16', 'image/vnd.pco.b16'],\n ['bat', 'application/x-msdownload'],\n ['bcpio', 'application/x-bcpio'],\n ['bdf', 'application/x-font-bdf'],\n ['bdm', 'application/vnd.syncml.dm+wbxml'],\n ['bdoc', 'application/x-bdoc'],\n ['bed', 'application/vnd.realvnc.bed'],\n ['bh2', 'application/vnd.fujitsu.oasysprs'],\n ['bin', 'application/octet-stream'],\n ['blb', 'application/x-blorb'],\n ['blorb', 'application/x-blorb'],\n ['bmi', 'application/vnd.bmi'],\n ['bmml', 'application/vnd.balsamiq.bmml+xml'],\n ['bmp', 'image/bmp'],\n ['book', 'application/vnd.framemaker'],\n ['box', 'application/vnd.previewsystems.box'],\n ['boz', 'application/x-bzip2'],\n ['bpk', 'application/octet-stream'],\n ['bpmn', 'application/octet-stream'],\n ['bsp', 'model/vnd.valve.source.compiled-map'],\n ['btif', 'image/prs.btif'],\n ['buffer', 'application/octet-stream'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['c', 'text/x-c'],\n ['c4d', 'application/vnd.clonk.c4group'],\n ['c4f', 'application/vnd.clonk.c4group'],\n ['c4g', 'application/vnd.clonk.c4group'],\n ['c4p', 'application/vnd.clonk.c4group'],\n ['c4u', 'application/vnd.clonk.c4group'],\n ['c11amc', 'application/vnd.cluetrust.cartomobile-config'],\n ['c11amz', 'application/vnd.cluetrust.cartomobile-config-pkg'],\n ['cab', 'application/vnd.ms-cab-compressed'],\n ['caf', 'audio/x-caf'],\n ['cap', 'application/vnd.tcpdump.pcap'],\n ['car', 'application/vnd.curl.car'],\n ['cat', 'application/vnd.ms-pki.seccat'],\n ['cb7', 'application/x-cbr'],\n ['cba', 'application/x-cbr'],\n ['cbr', 'application/x-cbr'],\n ['cbt', 'application/x-cbr'],\n ['cbz', 'application/x-cbr'],\n ['cc', 'text/x-c'],\n ['cco', 'application/x-cocoa'],\n ['cct', 'application/x-director'],\n ['ccxml', 'application/ccxml+xml'],\n ['cdbcmsg', 'application/vnd.contact.cmsg'],\n ['cda', 'application/x-cdf'],\n ['cdf', 'application/x-netcdf'],\n ['cdfx', 'application/cdfx+xml'],\n ['cdkey', 'application/vnd.mediastation.cdkey'],\n ['cdmia', 'application/cdmi-capability'],\n ['cdmic', 'application/cdmi-container'],\n ['cdmid', 'application/cdmi-domain'],\n ['cdmio', 'application/cdmi-object'],\n ['cdmiq', 'application/cdmi-queue'],\n ['cdr', 'application/cdr'],\n ['cdx', 'chemical/x-cdx'],\n ['cdxml', 'application/vnd.chemdraw+xml'],\n ['cdy', 'application/vnd.cinderella'],\n ['cer', 'application/pkix-cert'],\n ['cfs', 'application/x-cfs-compressed'],\n ['cgm', 'image/cgm'],\n ['chat', 'application/x-chat'],\n ['chm', 'application/vnd.ms-htmlhelp'],\n ['chrt', 'application/vnd.kde.kchart'],\n ['cif', 'chemical/x-cif'],\n ['cii', 'application/vnd.anser-web-certificate-issue-initiation'],\n ['cil', 'application/vnd.ms-artgalry'],\n ['cjs', 'application/node'],\n ['cla', 'application/vnd.claymore'],\n ['class', 'application/octet-stream'],\n ['clkk', 'application/vnd.crick.clicker.keyboard'],\n ['clkp', 'application/vnd.crick.clicker.palette'],\n ['clkt', 'application/vnd.crick.clicker.template'],\n ['clkw', 'application/vnd.crick.clicker.wordbank'],\n ['clkx', 'application/vnd.crick.clicker'],\n ['clp', 'application/x-msclip'],\n ['cmc', 'application/vnd.cosmocaller'],\n ['cmdf', 'chemical/x-cmdf'],\n ['cml', 'chemical/x-cml'],\n ['cmp', 'application/vnd.yellowriver-custom-menu'],\n ['cmx', 'image/x-cmx'],\n ['cod', 'application/vnd.rim.cod'],\n ['coffee', 'text/coffeescript'],\n ['com', 'application/x-msdownload'],\n ['conf', 'text/plain'],\n ['cpio', 'application/x-cpio'],\n ['cpp', 'text/x-c'],\n ['cpt', 'application/mac-compactpro'],\n ['crd', 'application/x-mscardfile'],\n ['crl', 'application/pkix-crl'],\n ['crt', 'application/x-x509-ca-cert'],\n ['crx', 'application/x-chrome-extension'],\n ['cryptonote', 'application/vnd.rig.cryptonote'],\n ['csh', 'application/x-csh'],\n ['csl', 'application/vnd.citationstyles.style+xml'],\n ['csml', 'chemical/x-csml'],\n ['csp', 'application/vnd.commonspace'],\n ['csr', 'application/octet-stream'],\n ['css', 'text/css'],\n ['cst', 'application/x-director'],\n ['csv', 'text/csv'],\n ['cu', 'application/cu-seeme'],\n ['curl', 'text/vnd.curl'],\n ['cww', 'application/prs.cww'],\n ['cxt', 'application/x-director'],\n ['cxx', 'text/x-c'],\n ['dae', 'model/vnd.collada+xml'],\n ['daf', 'application/vnd.mobius.daf'],\n ['dart', 'application/vnd.dart'],\n ['dataless', 'application/vnd.fdsn.seed'],\n ['davmount', 'application/davmount+xml'],\n ['dbf', 'application/vnd.dbf'],\n ['dbk', 'application/docbook+xml'],\n ['dcr', 'application/x-director'],\n ['dcurl', 'text/vnd.curl.dcurl'],\n ['dd2', 'application/vnd.oma.dd2+xml'],\n ['ddd', 'application/vnd.fujixerox.ddd'],\n ['ddf', 'application/vnd.syncml.dmddf+xml'],\n ['dds', 'image/vnd.ms-dds'],\n ['deb', 'application/x-debian-package'],\n ['def', 'text/plain'],\n ['deploy', 'application/octet-stream'],\n ['der', 'application/x-x509-ca-cert'],\n ['dfac', 'application/vnd.dreamfactory'],\n ['dgc', 'application/x-dgc-compressed'],\n ['dic', 'text/x-c'],\n ['dir', 'application/x-director'],\n ['dis', 'application/vnd.mobius.dis'],\n ['disposition-notification', 'message/disposition-notification'],\n ['dist', 'application/octet-stream'],\n ['distz', 'application/octet-stream'],\n ['djv', 'image/vnd.djvu'],\n ['djvu', 'image/vnd.djvu'],\n ['dll', 'application/octet-stream'],\n ['dmg', 'application/x-apple-diskimage'],\n ['dmn', 'application/octet-stream'],\n ['dmp', 'application/vnd.tcpdump.pcap'],\n ['dms', 'application/octet-stream'],\n ['dna', 'application/vnd.dna'],\n ['doc', 'application/msword'],\n ['docm', 'application/vnd.ms-word.template.macroEnabled.12'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['dot', 'application/msword'],\n ['dotm', 'application/vnd.ms-word.template.macroEnabled.12'],\n ['dotx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'],\n ['dp', 'application/vnd.osgi.dp'],\n ['dpg', 'application/vnd.dpgraph'],\n ['dra', 'audio/vnd.dra'],\n ['drle', 'image/dicom-rle'],\n ['dsc', 'text/prs.lines.tag'],\n ['dssc', 'application/dssc+der'],\n ['dtb', 'application/x-dtbook+xml'],\n ['dtd', 'application/xml-dtd'],\n ['dts', 'audio/vnd.dts'],\n ['dtshd', 'audio/vnd.dts.hd'],\n ['dump', 'application/octet-stream'],\n ['dvb', 'video/vnd.dvb.file'],\n ['dvi', 'application/x-dvi'],\n ['dwd', 'application/atsc-dwd+xml'],\n ['dwf', 'model/vnd.dwf'],\n ['dwg', 'image/vnd.dwg'],\n ['dxf', 'image/vnd.dxf'],\n ['dxp', 'application/vnd.spotfire.dxp'],\n ['dxr', 'application/x-director'],\n ['ear', 'application/java-archive'],\n ['ecelp4800', 'audio/vnd.nuera.ecelp4800'],\n ['ecelp7470', 'audio/vnd.nuera.ecelp7470'],\n ['ecelp9600', 'audio/vnd.nuera.ecelp9600'],\n ['ecma', 'application/ecmascript'],\n ['edm', 'application/vnd.novadigm.edm'],\n ['edx', 'application/vnd.novadigm.edx'],\n ['efif', 'application/vnd.picsel'],\n ['ei6', 'application/vnd.pg.osasli'],\n ['elc', 'application/octet-stream'],\n ['emf', 'image/emf'],\n ['eml', 'message/rfc822'],\n ['emma', 'application/emma+xml'],\n ['emotionml', 'application/emotionml+xml'],\n ['emz', 'application/x-msmetafile'],\n ['eol', 'audio/vnd.digital-winds'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['eps', 'application/postscript'],\n ['epub', 'application/epub+zip'],\n ['es', 'application/ecmascript'],\n ['es3', 'application/vnd.eszigno3+xml'],\n ['esa', 'application/vnd.osgi.subsystem'],\n ['esf', 'application/vnd.epson.esf'],\n ['et3', 'application/vnd.eszigno3+xml'],\n ['etx', 'text/x-setext'],\n ['eva', 'application/x-eva'],\n ['evy', 'application/x-envoy'],\n ['exe', 'application/octet-stream'],\n ['exi', 'application/exi'],\n ['exp', 'application/express'],\n ['exr', 'image/aces'],\n ['ext', 'application/vnd.novadigm.ext'],\n ['ez', 'application/andrew-inset'],\n ['ez2', 'application/vnd.ezpix-album'],\n ['ez3', 'application/vnd.ezpix-package'],\n ['f', 'text/x-fortran'],\n ['f4v', 'video/mp4'],\n ['f77', 'text/x-fortran'],\n ['f90', 'text/x-fortran'],\n ['fbs', 'image/vnd.fastbidsheet'],\n ['fcdt', 'application/vnd.adobe.formscentral.fcdt'],\n ['fcs', 'application/vnd.isac.fcs'],\n ['fdf', 'application/vnd.fdf'],\n ['fdt', 'application/fdt+xml'],\n ['fe_launch', 'application/vnd.denovo.fcselayout-link'],\n ['fg5', 'application/vnd.fujitsu.oasysgp'],\n ['fgd', 'application/x-director'],\n ['fh', 'image/x-freehand'],\n ['fh4', 'image/x-freehand'],\n ['fh5', 'image/x-freehand'],\n ['fh7', 'image/x-freehand'],\n ['fhc', 'image/x-freehand'],\n ['fig', 'application/x-xfig'],\n ['fits', 'image/fits'],\n ['flac', 'audio/x-flac'],\n ['fli', 'video/x-fli'],\n ['flo', 'application/vnd.micrografx.flo'],\n ['flv', 'video/x-flv'],\n ['flw', 'application/vnd.kde.kivio'],\n ['flx', 'text/vnd.fmi.flexstor'],\n ['fly', 'text/vnd.fly'],\n ['fm', 'application/vnd.framemaker'],\n ['fnc', 'application/vnd.frogans.fnc'],\n ['fo', 'application/vnd.software602.filler.form+xml'],\n ['for', 'text/x-fortran'],\n ['fpx', 'image/vnd.fpx'],\n ['frame', 'application/vnd.framemaker'],\n ['fsc', 'application/vnd.fsc.weblaunch'],\n ['fst', 'image/vnd.fst'],\n ['ftc', 'application/vnd.fluxtime.clip'],\n ['fti', 'application/vnd.anser-web-funds-transfer-initiation'],\n ['fvt', 'video/vnd.fvt'],\n ['fxp', 'application/vnd.adobe.fxp'],\n ['fxpl', 'application/vnd.adobe.fxp'],\n ['fzs', 'application/vnd.fuzzysheet'],\n ['g2w', 'application/vnd.geoplan'],\n ['g3', 'image/g3fax'],\n ['g3w', 'application/vnd.geospace'],\n ['gac', 'application/vnd.groove-account'],\n ['gam', 'application/x-tads'],\n ['gbr', 'application/rpki-ghostbusters'],\n ['gca', 'application/x-gca-compressed'],\n ['gdl', 'model/vnd.gdl'],\n ['gdoc', 'application/vnd.google-apps.document'],\n ['geo', 'application/vnd.dynageo'],\n ['geojson', 'application/geo+json'],\n ['gex', 'application/vnd.geometry-explorer'],\n ['ggb', 'application/vnd.geogebra.file'],\n ['ggt', 'application/vnd.geogebra.tool'],\n ['ghf', 'application/vnd.groove-help'],\n ['gif', 'image/gif'],\n ['gim', 'application/vnd.groove-identity-message'],\n ['glb', 'model/gltf-binary'],\n ['gltf', 'model/gltf+json'],\n ['gml', 'application/gml+xml'],\n ['gmx', 'application/vnd.gmx'],\n ['gnumeric', 'application/x-gnumeric'],\n ['gpg', 'application/gpg-keys'],\n ['gph', 'application/vnd.flographit'],\n ['gpx', 'application/gpx+xml'],\n ['gqf', 'application/vnd.grafeq'],\n ['gqs', 'application/vnd.grafeq'],\n ['gram', 'application/srgs'],\n ['gramps', 'application/x-gramps-xml'],\n ['gre', 'application/vnd.geometry-explorer'],\n ['grv', 'application/vnd.groove-injector'],\n ['grxml', 'application/srgs+xml'],\n ['gsf', 'application/x-font-ghostscript'],\n ['gsheet', 'application/vnd.google-apps.spreadsheet'],\n ['gslides', 'application/vnd.google-apps.presentation'],\n ['gtar', 'application/x-gtar'],\n ['gtm', 'application/vnd.groove-tool-message'],\n ['gtw', 'model/vnd.gtw'],\n ['gv', 'text/vnd.graphviz'],\n ['gxf', 'application/gxf'],\n ['gxt', 'application/vnd.geonext'],\n ['gz', 'application/gzip'],\n ['gzip', 'application/gzip'],\n ['h', 'text/x-c'],\n ['h261', 'video/h261'],\n ['h263', 'video/h263'],\n ['h264', 'video/h264'],\n ['hal', 'application/vnd.hal+xml'],\n ['hbci', 'application/vnd.hbci'],\n ['hbs', 'text/x-handlebars-template'],\n ['hdd', 'application/x-virtualbox-hdd'],\n ['hdf', 'application/x-hdf'],\n ['heic', 'image/heic'],\n ['heics', 'image/heic-sequence'],\n ['heif', 'image/heif'],\n ['heifs', 'image/heif-sequence'],\n ['hej2', 'image/hej2k'],\n ['held', 'application/atsc-held+xml'],\n ['hh', 'text/x-c'],\n ['hjson', 'application/hjson'],\n ['hlp', 'application/winhlp'],\n ['hpgl', 'application/vnd.hp-hpgl'],\n ['hpid', 'application/vnd.hp-hpid'],\n ['hps', 'application/vnd.hp-hps'],\n ['hqx', 'application/mac-binhex40'],\n ['hsj2', 'image/hsj2'],\n ['htc', 'text/x-component'],\n ['htke', 'application/vnd.kenameaapp'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['hvd', 'application/vnd.yamaha.hv-dic'],\n ['hvp', 'application/vnd.yamaha.hv-voice'],\n ['hvs', 'application/vnd.yamaha.hv-script'],\n ['i2g', 'application/vnd.intergeo'],\n ['icc', 'application/vnd.iccprofile'],\n ['ice', 'x-conference/x-cooltalk'],\n ['icm', 'application/vnd.iccprofile'],\n ['ico', 'image/x-icon'],\n ['ics', 'text/calendar'],\n ['ief', 'image/ief'],\n ['ifb', 'text/calendar'],\n ['ifm', 'application/vnd.shana.informed.formdata'],\n ['iges', 'model/iges'],\n ['igl', 'application/vnd.igloader'],\n ['igm', 'application/vnd.insors.igm'],\n ['igs', 'model/iges'],\n ['igx', 'application/vnd.micrografx.igx'],\n ['iif', 'application/vnd.shana.informed.interchange'],\n ['img', 'application/octet-stream'],\n ['imp', 'application/vnd.accpac.simply.imp'],\n ['ims', 'application/vnd.ms-ims'],\n ['in', 'text/plain'],\n ['ini', 'text/plain'],\n ['ink', 'application/inkml+xml'],\n ['inkml', 'application/inkml+xml'],\n ['install', 'application/x-install-instructions'],\n ['iota', 'application/vnd.astraea-software.iota'],\n ['ipfix', 'application/ipfix'],\n ['ipk', 'application/vnd.shana.informed.package'],\n ['irm', 'application/vnd.ibm.rights-management'],\n ['irp', 'application/vnd.irepository.package+xml'],\n ['iso', 'application/x-iso9660-image'],\n ['itp', 'application/vnd.shana.informed.formtemplate'],\n ['its', 'application/its+xml'],\n ['ivp', 'application/vnd.immervision-ivp'],\n ['ivu', 'application/vnd.immervision-ivu'],\n ['jad', 'text/vnd.sun.j2me.app-descriptor'],\n ['jade', 'text/jade'],\n ['jam', 'application/vnd.jam'],\n ['jar', 'application/java-archive'],\n ['jardiff', 'application/x-java-archive-diff'],\n ['java', 'text/x-java-source'],\n ['jhc', 'image/jphc'],\n ['jisp', 'application/vnd.jisp'],\n ['jls', 'image/jls'],\n ['jlt', 'application/vnd.hp-jlyt'],\n ['jng', 'image/x-jng'],\n ['jnlp', 'application/x-java-jnlp-file'],\n ['joda', 'application/vnd.joost.joda-archive'],\n ['jp2', 'image/jp2'],\n ['jpe', 'image/jpeg'],\n ['jpeg', 'image/jpeg'],\n ['jpf', 'image/jpx'],\n ['jpg', 'image/jpeg'],\n ['jpg2', 'image/jp2'],\n ['jpgm', 'video/jpm'],\n ['jpgv', 'video/jpeg'],\n ['jph', 'image/jph'],\n ['jpm', 'video/jpm'],\n ['jpx', 'image/jpx'],\n ['js', 'application/javascript'],\n ['json', 'application/json'],\n ['json5', 'application/json5'],\n ['jsonld', 'application/ld+json'],\n // https://jsonlines.org/\n ['jsonl', 'application/jsonl'],\n ['jsonml', 'application/jsonml+json'],\n ['jsx', 'text/jsx'],\n ['jxr', 'image/jxr'],\n ['jxra', 'image/jxra'],\n ['jxrs', 'image/jxrs'],\n ['jxs', 'image/jxs'],\n ['jxsc', 'image/jxsc'],\n ['jxsi', 'image/jxsi'],\n ['jxss', 'image/jxss'],\n ['kar', 'audio/midi'],\n ['karbon', 'application/vnd.kde.karbon'],\n ['kdb', 'application/octet-stream'],\n ['kdbx', 'application/x-keepass2'],\n ['key', 'application/x-iwork-keynote-sffkey'],\n ['kfo', 'application/vnd.kde.kformula'],\n ['kia', 'application/vnd.kidspiration'],\n ['kml', 'application/vnd.google-earth.kml+xml'],\n ['kmz', 'application/vnd.google-earth.kmz'],\n ['kne', 'application/vnd.kinar'],\n ['knp', 'application/vnd.kinar'],\n ['kon', 'application/vnd.kde.kontour'],\n ['kpr', 'application/vnd.kde.kpresenter'],\n ['kpt', 'application/vnd.kde.kpresenter'],\n ['kpxx', 'application/vnd.ds-keypoint'],\n ['ksp', 'application/vnd.kde.kspread'],\n ['ktr', 'application/vnd.kahootz'],\n ['ktx', 'image/ktx'],\n ['ktx2', 'image/ktx2'],\n ['ktz', 'application/vnd.kahootz'],\n ['kwd', 'application/vnd.kde.kword'],\n ['kwt', 'application/vnd.kde.kword'],\n ['lasxml', 'application/vnd.las.las+xml'],\n ['latex', 'application/x-latex'],\n ['lbd', 'application/vnd.llamagraphics.life-balance.desktop'],\n ['lbe', 'application/vnd.llamagraphics.life-balance.exchange+xml'],\n ['les', 'application/vnd.hhe.lesson-player'],\n ['less', 'text/less'],\n ['lgr', 'application/lgr+xml'],\n ['lha', 'application/octet-stream'],\n ['link66', 'application/vnd.route66.link66+xml'],\n ['list', 'text/plain'],\n ['list3820', 'application/vnd.ibm.modcap'],\n ['listafp', 'application/vnd.ibm.modcap'],\n ['litcoffee', 'text/coffeescript'],\n ['lnk', 'application/x-ms-shortcut'],\n ['log', 'text/plain'],\n ['lostxml', 'application/lost+xml'],\n ['lrf', 'application/octet-stream'],\n ['lrm', 'application/vnd.ms-lrm'],\n ['ltf', 'application/vnd.frogans.ltf'],\n ['lua', 'text/x-lua'],\n ['luac', 'application/x-lua-bytecode'],\n ['lvp', 'audio/vnd.lucent.voice'],\n ['lwp', 'application/vnd.lotus-wordpro'],\n ['lzh', 'application/octet-stream'],\n ['m1v', 'video/mpeg'],\n ['m2a', 'audio/mpeg'],\n ['m2v', 'video/mpeg'],\n ['m3a', 'audio/mpeg'],\n ['m3u', 'text/plain'],\n ['m3u8', 'application/vnd.apple.mpegurl'],\n ['m4a', 'audio/x-m4a'],\n ['m4p', 'application/mp4'],\n ['m4s', 'video/iso.segment'],\n ['m4u', 'application/vnd.mpegurl'],\n ['m4v', 'video/x-m4v'],\n ['m13', 'application/x-msmediaview'],\n ['m14', 'application/x-msmediaview'],\n ['m21', 'application/mp21'],\n ['ma', 'application/mathematica'],\n ['mads', 'application/mads+xml'],\n ['maei', 'application/mmt-aei+xml'],\n ['mag', 'application/vnd.ecowin.chart'],\n ['maker', 'application/vnd.framemaker'],\n ['man', 'text/troff'],\n ['manifest', 'text/cache-manifest'],\n ['map', 'application/json'],\n ['mar', 'application/octet-stream'],\n ['markdown', 'text/markdown'],\n ['mathml', 'application/mathml+xml'],\n ['mb', 'application/mathematica'],\n ['mbk', 'application/vnd.mobius.mbk'],\n ['mbox', 'application/mbox'],\n ['mc1', 'application/vnd.medcalcdata'],\n ['mcd', 'application/vnd.mcd'],\n ['mcurl', 'text/vnd.curl.mcurl'],\n ['md', 'text/markdown'],\n ['mdb', 'application/x-msaccess'],\n ['mdi', 'image/vnd.ms-modi'],\n ['mdx', 'text/mdx'],\n ['me', 'text/troff'],\n ['mesh', 'model/mesh'],\n ['meta4', 'application/metalink4+xml'],\n ['metalink', 'application/metalink+xml'],\n ['mets', 'application/mets+xml'],\n ['mfm', 'application/vnd.mfmp'],\n ['mft', 'application/rpki-manifest'],\n ['mgp', 'application/vnd.osgeo.mapguide.package'],\n ['mgz', 'application/vnd.proteus.magazine'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mie', 'application/x-mie'],\n ['mif', 'application/vnd.mif'],\n ['mime', 'message/rfc822'],\n ['mj2', 'video/mj2'],\n ['mjp2', 'video/mj2'],\n ['mjs', 'application/javascript'],\n ['mk3d', 'video/x-matroska'],\n ['mka', 'audio/x-matroska'],\n ['mkd', 'text/x-markdown'],\n ['mks', 'video/x-matroska'],\n ['mkv', 'video/x-matroska'],\n ['mlp', 'application/vnd.dolby.mlp'],\n ['mmd', 'application/vnd.chipnuts.karaoke-mmd'],\n ['mmf', 'application/vnd.smaf'],\n ['mml', 'text/mathml'],\n ['mmr', 'image/vnd.fujixerox.edmics-mmr'],\n ['mng', 'video/x-mng'],\n ['mny', 'application/x-msmoney'],\n ['mobi', 'application/x-mobipocket-ebook'],\n ['mods', 'application/mods+xml'],\n ['mov', 'video/quicktime'],\n ['movie', 'video/x-sgi-movie'],\n ['mp2', 'audio/mpeg'],\n ['mp2a', 'audio/mpeg'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mp4a', 'audio/mp4'],\n ['mp4s', 'application/mp4'],\n ['mp4v', 'video/mp4'],\n ['mp21', 'application/mp21'],\n ['mpc', 'application/vnd.mophun.certificate'],\n ['mpd', 'application/dash+xml'],\n ['mpe', 'video/mpeg'],\n ['mpeg', 'video/mpeg'],\n ['mpg', 'video/mpeg'],\n ['mpg4', 'video/mp4'],\n ['mpga', 'audio/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['mpm', 'application/vnd.blueice.multipass'],\n ['mpn', 'application/vnd.mophun.application'],\n ['mpp', 'application/vnd.ms-project'],\n ['mpt', 'application/vnd.ms-project'],\n ['mpy', 'application/vnd.ibm.minipay'],\n ['mqy', 'application/vnd.mobius.mqy'],\n ['mrc', 'application/marc'],\n ['mrcx', 'application/marcxml+xml'],\n ['ms', 'text/troff'],\n ['mscml', 'application/mediaservercontrol+xml'],\n ['mseed', 'application/vnd.fdsn.mseed'],\n ['mseq', 'application/vnd.mseq'],\n ['msf', 'application/vnd.epson.msf'],\n ['msg', 'application/vnd.ms-outlook'],\n ['msh', 'model/mesh'],\n ['msi', 'application/x-msdownload'],\n ['msl', 'application/vnd.mobius.msl'],\n ['msm', 'application/octet-stream'],\n ['msp', 'application/octet-stream'],\n ['msty', 'application/vnd.muvee.style'],\n ['mtl', 'model/mtl'],\n ['mts', 'model/vnd.mts'],\n ['mus', 'application/vnd.musician'],\n ['musd', 'application/mmt-usd+xml'],\n ['musicxml', 'application/vnd.recordare.musicxml+xml'],\n ['mvb', 'application/x-msmediaview'],\n ['mvt', 'application/vnd.mapbox-vector-tile'],\n ['mwf', 'application/vnd.mfer'],\n ['mxf', 'application/mxf'],\n ['mxl', 'application/vnd.recordare.musicxml'],\n ['mxmf', 'audio/mobile-xmf'],\n ['mxml', 'application/xv+xml'],\n ['mxs', 'application/vnd.triscape.mxs'],\n ['mxu', 'video/vnd.mpegurl'],\n ['n-gage', 'application/vnd.nokia.n-gage.symbian.install'],\n ['n3', 'text/n3'],\n ['nb', 'application/mathematica'],\n ['nbp', 'application/vnd.wolfram.player'],\n ['nc', 'application/x-netcdf'],\n ['ncx', 'application/x-dtbncx+xml'],\n ['nfo', 'text/x-nfo'],\n ['ngdat', 'application/vnd.nokia.n-gage.data'],\n ['nitf', 'application/vnd.nitf'],\n ['nlu', 'application/vnd.neurolanguage.nlu'],\n ['nml', 'application/vnd.enliven'],\n ['nnd', 'application/vnd.noblenet-directory'],\n ['nns', 'application/vnd.noblenet-sealer'],\n ['nnw', 'application/vnd.noblenet-web'],\n ['npx', 'image/vnd.net-fpx'],\n ['nq', 'application/n-quads'],\n ['nsc', 'application/x-conference'],\n ['nsf', 'application/vnd.lotus-notes'],\n ['nt', 'application/n-triples'],\n ['ntf', 'application/vnd.nitf'],\n ['numbers', 'application/x-iwork-numbers-sffnumbers'],\n ['nzb', 'application/x-nzb'],\n ['oa2', 'application/vnd.fujitsu.oasys2'],\n ['oa3', 'application/vnd.fujitsu.oasys3'],\n ['oas', 'application/vnd.fujitsu.oasys'],\n ['obd', 'application/x-msbinder'],\n ['obgx', 'application/vnd.openblox.game+xml'],\n ['obj', 'model/obj'],\n ['oda', 'application/oda'],\n ['odb', 'application/vnd.oasis.opendocument.database'],\n ['odc', 'application/vnd.oasis.opendocument.chart'],\n ['odf', 'application/vnd.oasis.opendocument.formula'],\n ['odft', 'application/vnd.oasis.opendocument.formula-template'],\n ['odg', 'application/vnd.oasis.opendocument.graphics'],\n ['odi', 'application/vnd.oasis.opendocument.image'],\n ['odm', 'application/vnd.oasis.opendocument.text-master'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogex', 'model/vnd.opengex'],\n ['ogg', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['omdoc', 'application/omdoc+xml'],\n ['onepkg', 'application/onenote'],\n ['onetmp', 'application/onenote'],\n ['onetoc', 'application/onenote'],\n ['onetoc2', 'application/onenote'],\n ['opf', 'application/oebps-package+xml'],\n ['opml', 'text/x-opml'],\n ['oprc', 'application/vnd.palm'],\n ['opus', 'audio/ogg'],\n ['org', 'text/x-org'],\n ['osf', 'application/vnd.yamaha.openscoreformat'],\n ['osfpvg', 'application/vnd.yamaha.openscoreformat.osfpvg+xml'],\n ['osm', 'application/vnd.openstreetmap.data+xml'],\n ['otc', 'application/vnd.oasis.opendocument.chart-template'],\n ['otf', 'font/otf'],\n ['otg', 'application/vnd.oasis.opendocument.graphics-template'],\n ['oth', 'application/vnd.oasis.opendocument.text-web'],\n ['oti', 'application/vnd.oasis.opendocument.image-template'],\n ['otp', 'application/vnd.oasis.opendocument.presentation-template'],\n ['ots', 'application/vnd.oasis.opendocument.spreadsheet-template'],\n ['ott', 'application/vnd.oasis.opendocument.text-template'],\n ['ova', 'application/x-virtualbox-ova'],\n ['ovf', 'application/x-virtualbox-ovf'],\n ['owl', 'application/rdf+xml'],\n ['oxps', 'application/oxps'],\n ['oxt', 'application/vnd.openofficeorg.extension'],\n ['p', 'text/x-pascal'],\n ['p7a', 'application/x-pkcs7-signature'],\n ['p7b', 'application/x-pkcs7-certificates'],\n ['p7c', 'application/pkcs7-mime'],\n ['p7m', 'application/pkcs7-mime'],\n ['p7r', 'application/x-pkcs7-certreqresp'],\n ['p7s', 'application/pkcs7-signature'],\n ['p8', 'application/pkcs8'],\n ['p10', 'application/x-pkcs10'],\n ['p12', 'application/x-pkcs12'],\n ['pac', 'application/x-ns-proxy-autoconfig'],\n ['pages', 'application/x-iwork-pages-sffpages'],\n ['pas', 'text/x-pascal'],\n ['paw', 'application/vnd.pawaafile'],\n ['pbd', 'application/vnd.powerbuilder6'],\n ['pbm', 'image/x-portable-bitmap'],\n ['pcap', 'application/vnd.tcpdump.pcap'],\n ['pcf', 'application/x-font-pcf'],\n ['pcl', 'application/vnd.hp-pcl'],\n ['pclxl', 'application/vnd.hp-pclxl'],\n ['pct', 'image/x-pict'],\n ['pcurl', 'application/vnd.curl.pcurl'],\n ['pcx', 'image/x-pcx'],\n ['pdb', 'application/x-pilot'],\n ['pde', 'text/x-processing'],\n ['pdf', 'application/pdf'],\n ['pem', 'application/x-x509-user-cert'],\n ['pfa', 'application/x-font-type1'],\n ['pfb', 'application/x-font-type1'],\n ['pfm', 'application/x-font-type1'],\n ['pfr', 'application/font-tdpfr'],\n ['pfx', 'application/x-pkcs12'],\n ['pgm', 'image/x-portable-graymap'],\n ['pgn', 'application/x-chess-pgn'],\n ['pgp', 'application/pgp'],\n ['php', 'application/x-httpd-php'],\n ['php3', 'application/x-httpd-php'],\n ['php4', 'application/x-httpd-php'],\n ['phps', 'application/x-httpd-php-source'],\n ['phtml', 'application/x-httpd-php'],\n ['pic', 'image/x-pict'],\n ['pkg', 'application/octet-stream'],\n ['pki', 'application/pkixcmp'],\n ['pkipath', 'application/pkix-pkipath'],\n ['pkpass', 'application/vnd.apple.pkpass'],\n ['pl', 'application/x-perl'],\n ['plb', 'application/vnd.3gpp.pic-bw-large'],\n ['plc', 'application/vnd.mobius.plc'],\n ['plf', 'application/vnd.pocketlearn'],\n ['pls', 'application/pls+xml'],\n ['pm', 'application/x-perl'],\n ['pml', 'application/vnd.ctc-posml'],\n ['png', 'image/png'],\n ['pnm', 'image/x-portable-anymap'],\n ['portpkg', 'application/vnd.macports.portpkg'],\n ['pot', 'application/vnd.ms-powerpoint'],\n ['potm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],\n ['potx', 'application/vnd.openxmlformats-officedocument.presentationml.template'],\n ['ppa', 'application/vnd.ms-powerpoint'],\n ['ppam', 'application/vnd.ms-powerpoint.addin.macroEnabled.12'],\n ['ppd', 'application/vnd.cups-ppd'],\n ['ppm', 'image/x-portable-pixmap'],\n ['pps', 'application/vnd.ms-powerpoint'],\n ['ppsm', 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'],\n ['ppsx', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'],\n ['ppt', 'application/powerpoint'],\n ['pptm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['pqa', 'application/vnd.palm'],\n ['prc', 'application/x-pilot'],\n ['pre', 'application/vnd.lotus-freelance'],\n ['prf', 'application/pics-rules'],\n ['provx', 'application/provenance+xml'],\n ['ps', 'application/postscript'],\n ['psb', 'application/vnd.3gpp.pic-bw-small'],\n ['psd', 'application/x-photoshop'],\n ['psf', 'application/x-font-linux-psf'],\n ['pskcxml', 'application/pskc+xml'],\n ['pti', 'image/prs.pti'],\n ['ptid', 'application/vnd.pvi.ptid1'],\n ['pub', 'application/x-mspublisher'],\n ['pvb', 'application/vnd.3gpp.pic-bw-var'],\n ['pwn', 'application/vnd.3m.post-it-notes'],\n ['pya', 'audio/vnd.ms-playready.media.pya'],\n ['pyv', 'video/vnd.ms-playready.media.pyv'],\n ['qam', 'application/vnd.epson.quickanime'],\n ['qbo', 'application/vnd.intu.qbo'],\n ['qfx', 'application/vnd.intu.qfx'],\n ['qps', 'application/vnd.publishare-delta-tree'],\n ['qt', 'video/quicktime'],\n ['qwd', 'application/vnd.quark.quarkxpress'],\n ['qwt', 'application/vnd.quark.quarkxpress'],\n ['qxb', 'application/vnd.quark.quarkxpress'],\n ['qxd', 'application/vnd.quark.quarkxpress'],\n ['qxl', 'application/vnd.quark.quarkxpress'],\n ['qxt', 'application/vnd.quark.quarkxpress'],\n ['ra', 'audio/x-realaudio'],\n ['ram', 'audio/x-pn-realaudio'],\n ['raml', 'application/raml+yaml'],\n ['rapd', 'application/route-apd+xml'],\n ['rar', 'application/x-rar'],\n ['ras', 'image/x-cmu-raster'],\n ['rcprofile', 'application/vnd.ipunplugged.rcprofile'],\n ['rdf', 'application/rdf+xml'],\n ['rdz', 'application/vnd.data-vision.rdz'],\n ['relo', 'application/p2p-overlay+xml'],\n ['rep', 'application/vnd.businessobjects'],\n ['res', 'application/x-dtbresource+xml'],\n ['rgb', 'image/x-rgb'],\n ['rif', 'application/reginfo+xml'],\n ['rip', 'audio/vnd.rip'],\n ['ris', 'application/x-research-info-systems'],\n ['rl', 'application/resource-lists+xml'],\n ['rlc', 'image/vnd.fujixerox.edmics-rlc'],\n ['rld', 'application/resource-lists-diff+xml'],\n ['rm', 'audio/x-pn-realaudio'],\n ['rmi', 'audio/midi'],\n ['rmp', 'audio/x-pn-realaudio-plugin'],\n ['rms', 'application/vnd.jcp.javame.midlet-rms'],\n ['rmvb', 'application/vnd.rn-realmedia-vbr'],\n ['rnc', 'application/relax-ng-compact-syntax'],\n ['rng', 'application/xml'],\n ['roa', 'application/rpki-roa'],\n ['roff', 'text/troff'],\n ['rp9', 'application/vnd.cloanto.rp9'],\n ['rpm', 'audio/x-pn-realaudio-plugin'],\n ['rpss', 'application/vnd.nokia.radio-presets'],\n ['rpst', 'application/vnd.nokia.radio-preset'],\n ['rq', 'application/sparql-query'],\n ['rs', 'application/rls-services+xml'],\n ['rsa', 'application/x-pkcs7'],\n ['rsat', 'application/atsc-rsat+xml'],\n ['rsd', 'application/rsd+xml'],\n ['rsheet', 'application/urc-ressheet+xml'],\n ['rss', 'application/rss+xml'],\n ['rtf', 'text/rtf'],\n ['rtx', 'text/richtext'],\n ['run', 'application/x-makeself'],\n ['rusd', 'application/route-usd+xml'],\n ['rv', 'video/vnd.rn-realvideo'],\n ['s', 'text/x-asm'],\n ['s3m', 'audio/s3m'],\n ['saf', 'application/vnd.yamaha.smaf-audio'],\n ['sass', 'text/x-sass'],\n ['sbml', 'application/sbml+xml'],\n ['sc', 'application/vnd.ibm.secure-container'],\n ['scd', 'application/x-msschedule'],\n ['scm', 'application/vnd.lotus-screencam'],\n ['scq', 'application/scvp-cv-request'],\n ['scs', 'application/scvp-cv-response'],\n ['scss', 'text/x-scss'],\n ['scurl', 'text/vnd.curl.scurl'],\n ['sda', 'application/vnd.stardivision.draw'],\n ['sdc', 'application/vnd.stardivision.calc'],\n ['sdd', 'application/vnd.stardivision.impress'],\n ['sdkd', 'application/vnd.solent.sdkm+xml'],\n ['sdkm', 'application/vnd.solent.sdkm+xml'],\n ['sdp', 'application/sdp'],\n ['sdw', 'application/vnd.stardivision.writer'],\n ['sea', 'application/octet-stream'],\n ['see', 'application/vnd.seemail'],\n ['seed', 'application/vnd.fdsn.seed'],\n ['sema', 'application/vnd.sema'],\n ['semd', 'application/vnd.semd'],\n ['semf', 'application/vnd.semf'],\n ['senmlx', 'application/senml+xml'],\n ['sensmlx', 'application/sensml+xml'],\n ['ser', 'application/java-serialized-object'],\n ['setpay', 'application/set-payment-initiation'],\n ['setreg', 'application/set-registration-initiation'],\n ['sfd-hdstx', 'application/vnd.hydrostatix.sof-data'],\n ['sfs', 'application/vnd.spotfire.sfs'],\n ['sfv', 'text/x-sfv'],\n ['sgi', 'image/sgi'],\n ['sgl', 'application/vnd.stardivision.writer-global'],\n ['sgm', 'text/sgml'],\n ['sgml', 'text/sgml'],\n ['sh', 'application/x-sh'],\n ['shar', 'application/x-shar'],\n ['shex', 'text/shex'],\n ['shf', 'application/shf+xml'],\n ['shtml', 'text/html'],\n ['sid', 'image/x-mrsid-image'],\n ['sieve', 'application/sieve'],\n ['sig', 'application/pgp-signature'],\n ['sil', 'audio/silk'],\n ['silo', 'model/mesh'],\n ['sis', 'application/vnd.symbian.install'],\n ['sisx', 'application/vnd.symbian.install'],\n ['sit', 'application/x-stuffit'],\n ['sitx', 'application/x-stuffitx'],\n ['siv', 'application/sieve'],\n ['skd', 'application/vnd.koan'],\n ['skm', 'application/vnd.koan'],\n ['skp', 'application/vnd.koan'],\n ['skt', 'application/vnd.koan'],\n ['sldm', 'application/vnd.ms-powerpoint.slide.macroenabled.12'],\n ['sldx', 'application/vnd.openxmlformats-officedocument.presentationml.slide'],\n ['slim', 'text/slim'],\n ['slm', 'text/slim'],\n ['sls', 'application/route-s-tsid+xml'],\n ['slt', 'application/vnd.epson.salt'],\n ['sm', 'application/vnd.stepmania.stepchart'],\n ['smf', 'application/vnd.stardivision.math'],\n ['smi', 'application/smil'],\n ['smil', 'application/smil'],\n ['smv', 'video/x-smv'],\n ['smzip', 'application/vnd.stepmania.package'],\n ['snd', 'audio/basic'],\n ['snf', 'application/x-font-snf'],\n ['so', 'application/octet-stream'],\n ['spc', 'application/x-pkcs7-certificates'],\n ['spdx', 'text/spdx'],\n ['spf', 'application/vnd.yamaha.smaf-phrase'],\n ['spl', 'application/x-futuresplash'],\n ['spot', 'text/vnd.in3d.spot'],\n ['spp', 'application/scvp-vp-response'],\n ['spq', 'application/scvp-vp-request'],\n ['spx', 'audio/ogg'],\n ['sql', 'application/x-sql'],\n ['src', 'application/x-wais-source'],\n ['srt', 'application/x-subrip'],\n ['sru', 'application/sru+xml'],\n ['srx', 'application/sparql-results+xml'],\n ['ssdl', 'application/ssdl+xml'],\n ['sse', 'application/vnd.kodak-descriptor'],\n ['ssf', 'application/vnd.epson.ssf'],\n ['ssml', 'application/ssml+xml'],\n ['sst', 'application/octet-stream'],\n ['st', 'application/vnd.sailingtracker.track'],\n ['stc', 'application/vnd.sun.xml.calc.template'],\n ['std', 'application/vnd.sun.xml.draw.template'],\n ['stf', 'application/vnd.wt.stf'],\n ['sti', 'application/vnd.sun.xml.impress.template'],\n ['stk', 'application/hyperstudio'],\n ['stl', 'model/stl'],\n ['stpx', 'model/step+xml'],\n ['stpxz', 'model/step-xml+zip'],\n ['stpz', 'model/step+zip'],\n ['str', 'application/vnd.pg.format'],\n ['stw', 'application/vnd.sun.xml.writer.template'],\n ['styl', 'text/stylus'],\n ['stylus', 'text/stylus'],\n ['sub', 'text/vnd.dvb.subtitle'],\n ['sus', 'application/vnd.sus-calendar'],\n ['susp', 'application/vnd.sus-calendar'],\n ['sv4cpio', 'application/x-sv4cpio'],\n ['sv4crc', 'application/x-sv4crc'],\n ['svc', 'application/vnd.dvb.service'],\n ['svd', 'application/vnd.svd'],\n ['svg', 'image/svg+xml'],\n ['svgz', 'image/svg+xml'],\n ['swa', 'application/x-director'],\n ['swf', 'application/x-shockwave-flash'],\n ['swi', 'application/vnd.aristanetworks.swi'],\n ['swidtag', 'application/swid+xml'],\n ['sxc', 'application/vnd.sun.xml.calc'],\n ['sxd', 'application/vnd.sun.xml.draw'],\n ['sxg', 'application/vnd.sun.xml.writer.global'],\n ['sxi', 'application/vnd.sun.xml.impress'],\n ['sxm', 'application/vnd.sun.xml.math'],\n ['sxw', 'application/vnd.sun.xml.writer'],\n ['t', 'text/troff'],\n ['t3', 'application/x-t3vm-image'],\n ['t38', 'image/t38'],\n ['taglet', 'application/vnd.mynfc'],\n ['tao', 'application/vnd.tao.intent-module-archive'],\n ['tap', 'image/vnd.tencent.tap'],\n ['tar', 'application/x-tar'],\n ['tcap', 'application/vnd.3gpp2.tcap'],\n ['tcl', 'application/x-tcl'],\n ['td', 'application/urc-targetdesc+xml'],\n ['teacher', 'application/vnd.smart.teacher'],\n ['tei', 'application/tei+xml'],\n ['teicorpus', 'application/tei+xml'],\n ['tex', 'application/x-tex'],\n ['texi', 'application/x-texinfo'],\n ['texinfo', 'application/x-texinfo'],\n ['text', 'text/plain'],\n ['tfi', 'application/thraud+xml'],\n ['tfm', 'application/x-tex-tfm'],\n ['tfx', 'image/tiff-fx'],\n ['tga', 'image/x-tga'],\n ['tgz', 'application/x-tar'],\n ['thmx', 'application/vnd.ms-officetheme'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['tk', 'application/x-tcl'],\n ['tmo', 'application/vnd.tmobile-livetv'],\n ['toml', 'application/toml'],\n ['torrent', 'application/x-bittorrent'],\n ['tpl', 'application/vnd.groove-tool-template'],\n ['tpt', 'application/vnd.trid.tpt'],\n ['tr', 'text/troff'],\n ['tra', 'application/vnd.trueapp'],\n ['trig', 'application/trig'],\n ['trm', 'application/x-msterminal'],\n ['ts', 'video/mp2t'],\n ['tsd', 'application/timestamped-data'],\n ['tsv', 'text/tab-separated-values'],\n ['ttc', 'font/collection'],\n ['ttf', 'font/ttf'],\n ['ttl', 'text/turtle'],\n ['ttml', 'application/ttml+xml'],\n ['twd', 'application/vnd.simtech-mindmapper'],\n ['twds', 'application/vnd.simtech-mindmapper'],\n ['txd', 'application/vnd.genomatix.tuxedo'],\n ['txf', 'application/vnd.mobius.txf'],\n ['txt', 'text/plain'],\n ['u8dsn', 'message/global-delivery-status'],\n ['u8hdr', 'message/global-headers'],\n ['u8mdn', 'message/global-disposition-notification'],\n ['u8msg', 'message/global'],\n ['u32', 'application/x-authorware-bin'],\n ['ubj', 'application/ubjson'],\n ['udeb', 'application/x-debian-package'],\n ['ufd', 'application/vnd.ufdl'],\n ['ufdl', 'application/vnd.ufdl'],\n ['ulx', 'application/x-glulx'],\n ['umj', 'application/vnd.umajin'],\n ['unityweb', 'application/vnd.unity'],\n ['uoml', 'application/vnd.uoml+xml'],\n ['uri', 'text/uri-list'],\n ['uris', 'text/uri-list'],\n ['urls', 'text/uri-list'],\n ['usdz', 'model/vnd.usdz+zip'],\n ['ustar', 'application/x-ustar'],\n ['utz', 'application/vnd.uiq.theme'],\n ['uu', 'text/x-uuencode'],\n ['uva', 'audio/vnd.dece.audio'],\n ['uvd', 'application/vnd.dece.data'],\n ['uvf', 'application/vnd.dece.data'],\n ['uvg', 'image/vnd.dece.graphic'],\n ['uvh', 'video/vnd.dece.hd'],\n ['uvi', 'image/vnd.dece.graphic'],\n ['uvm', 'video/vnd.dece.mobile'],\n ['uvp', 'video/vnd.dece.pd'],\n ['uvs', 'video/vnd.dece.sd'],\n ['uvt', 'application/vnd.dece.ttml+xml'],\n ['uvu', 'video/vnd.uvvu.mp4'],\n ['uvv', 'video/vnd.dece.video'],\n ['uvva', 'audio/vnd.dece.audio'],\n ['uvvd', 'application/vnd.dece.data'],\n ['uvvf', 'application/vnd.dece.data'],\n ['uvvg', 'image/vnd.dece.graphic'],\n ['uvvh', 'video/vnd.dece.hd'],\n ['uvvi', 'image/vnd.dece.graphic'],\n ['uvvm', 'video/vnd.dece.mobile'],\n ['uvvp', 'video/vnd.dece.pd'],\n ['uvvs', 'video/vnd.dece.sd'],\n ['uvvt', 'application/vnd.dece.ttml+xml'],\n ['uvvu', 'video/vnd.uvvu.mp4'],\n ['uvvv', 'video/vnd.dece.video'],\n ['uvvx', 'application/vnd.dece.unspecified'],\n ['uvvz', 'application/vnd.dece.zip'],\n ['uvx', 'application/vnd.dece.unspecified'],\n ['uvz', 'application/vnd.dece.zip'],\n ['vbox', 'application/x-virtualbox-vbox'],\n ['vbox-extpack', 'application/x-virtualbox-vbox-extpack'],\n ['vcard', 'text/vcard'],\n ['vcd', 'application/x-cdlink'],\n ['vcf', 'text/x-vcard'],\n ['vcg', 'application/vnd.groove-vcard'],\n ['vcs', 'text/x-vcalendar'],\n ['vcx', 'application/vnd.vcx'],\n ['vdi', 'application/x-virtualbox-vdi'],\n ['vds', 'model/vnd.sap.vds'],\n ['vhd', 'application/x-virtualbox-vhd'],\n ['vis', 'application/vnd.visionary'],\n ['viv', 'video/vnd.vivo'],\n ['vlc', 'application/videolan'],\n ['vmdk', 'application/x-virtualbox-vmdk'],\n ['vob', 'video/x-ms-vob'],\n ['vor', 'application/vnd.stardivision.writer'],\n ['vox', 'application/x-authorware-bin'],\n ['vrml', 'model/vrml'],\n ['vsd', 'application/vnd.visio'],\n ['vsf', 'application/vnd.vsf'],\n ['vss', 'application/vnd.visio'],\n ['vst', 'application/vnd.visio'],\n ['vsw', 'application/vnd.visio'],\n ['vtf', 'image/vnd.valve.source.texture'],\n ['vtt', 'text/vtt'],\n ['vtu', 'model/vnd.vtu'],\n ['vxml', 'application/voicexml+xml'],\n ['w3d', 'application/x-director'],\n ['wad', 'application/x-doom'],\n ['wadl', 'application/vnd.sun.wadl+xml'],\n ['war', 'application/java-archive'],\n ['wasm', 'application/wasm'],\n ['wav', 'audio/x-wav'],\n ['wax', 'audio/x-ms-wax'],\n ['wbmp', 'image/vnd.wap.wbmp'],\n ['wbs', 'application/vnd.criticaltools.wbs+xml'],\n ['wbxml', 'application/wbxml'],\n ['wcm', 'application/vnd.ms-works'],\n ['wdb', 'application/vnd.ms-works'],\n ['wdp', 'image/vnd.ms-photo'],\n ['weba', 'audio/webm'],\n ['webapp', 'application/x-web-app-manifest+json'],\n ['webm', 'video/webm'],\n ['webmanifest', 'application/manifest+json'],\n ['webp', 'image/webp'],\n ['wg', 'application/vnd.pmi.widget'],\n ['wgt', 'application/widget'],\n ['wks', 'application/vnd.ms-works'],\n ['wm', 'video/x-ms-wm'],\n ['wma', 'audio/x-ms-wma'],\n ['wmd', 'application/x-ms-wmd'],\n ['wmf', 'image/wmf'],\n ['wml', 'text/vnd.wap.wml'],\n ['wmlc', 'application/wmlc'],\n ['wmls', 'text/vnd.wap.wmlscript'],\n ['wmlsc', 'application/vnd.wap.wmlscriptc'],\n ['wmv', 'video/x-ms-wmv'],\n ['wmx', 'video/x-ms-wmx'],\n ['wmz', 'application/x-msmetafile'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['word', 'application/msword'],\n ['wpd', 'application/vnd.wordperfect'],\n ['wpl', 'application/vnd.ms-wpl'],\n ['wps', 'application/vnd.ms-works'],\n ['wqd', 'application/vnd.wqd'],\n ['wri', 'application/x-mswrite'],\n ['wrl', 'model/vrml'],\n ['wsc', 'message/vnd.wfa.wsc'],\n ['wsdl', 'application/wsdl+xml'],\n ['wspolicy', 'application/wspolicy+xml'],\n ['wtb', 'application/vnd.webturbo'],\n ['wvx', 'video/x-ms-wvx'],\n ['x3d', 'model/x3d+xml'],\n ['x3db', 'model/x3d+fastinfoset'],\n ['x3dbz', 'model/x3d+binary'],\n ['x3dv', 'model/x3d-vrml'],\n ['x3dvz', 'model/x3d+vrml'],\n ['x3dz', 'model/x3d+xml'],\n ['x32', 'application/x-authorware-bin'],\n ['x_b', 'model/vnd.parasolid.transmit.binary'],\n ['x_t', 'model/vnd.parasolid.transmit.text'],\n ['xaml', 'application/xaml+xml'],\n ['xap', 'application/x-silverlight-app'],\n ['xar', 'application/vnd.xara'],\n ['xav', 'application/xcap-att+xml'],\n ['xbap', 'application/x-ms-xbap'],\n ['xbd', 'application/vnd.fujixerox.docuworks.binder'],\n ['xbm', 'image/x-xbitmap'],\n ['xca', 'application/xcap-caps+xml'],\n ['xcs', 'application/calendar+xml'],\n ['xdf', 'application/xcap-diff+xml'],\n ['xdm', 'application/vnd.syncml.dm+xml'],\n ['xdp', 'application/vnd.adobe.xdp+xml'],\n ['xdssc', 'application/dssc+xml'],\n ['xdw', 'application/vnd.fujixerox.docuworks'],\n ['xel', 'application/xcap-el+xml'],\n ['xenc', 'application/xenc+xml'],\n ['xer', 'application/patch-ops-error+xml'],\n ['xfdf', 'application/vnd.adobe.xfdf'],\n ['xfdl', 'application/vnd.xfdl'],\n ['xht', 'application/xhtml+xml'],\n ['xhtml', 'application/xhtml+xml'],\n ['xhvml', 'application/xv+xml'],\n ['xif', 'image/vnd.xiff'],\n ['xl', 'application/excel'],\n ['xla', 'application/vnd.ms-excel'],\n ['xlam', 'application/vnd.ms-excel.addin.macroEnabled.12'],\n ['xlc', 'application/vnd.ms-excel'],\n ['xlf', 'application/xliff+xml'],\n ['xlm', 'application/vnd.ms-excel'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsb', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'],\n ['xlsm', 'application/vnd.ms-excel.sheet.macroEnabled.12'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xlt', 'application/vnd.ms-excel'],\n ['xltm', 'application/vnd.ms-excel.template.macroEnabled.12'],\n ['xltx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'],\n ['xlw', 'application/vnd.ms-excel'],\n ['xm', 'audio/xm'],\n ['xml', 'application/xml'],\n ['xns', 'application/xcap-ns+xml'],\n ['xo', 'application/vnd.olpc-sugar'],\n ['xop', 'application/xop+xml'],\n ['xpi', 'application/x-xpinstall'],\n ['xpl', 'application/xproc+xml'],\n ['xpm', 'image/x-xpixmap'],\n ['xpr', 'application/vnd.is-xpr'],\n ['xps', 'application/vnd.ms-xpsdocument'],\n ['xpw', 'application/vnd.intercon.formnet'],\n ['xpx', 'application/vnd.intercon.formnet'],\n ['xsd', 'application/xml'],\n ['xsl', 'application/xml'],\n ['xslt', 'application/xslt+xml'],\n ['xsm', 'application/vnd.syncml+xml'],\n ['xspf', 'application/xspf+xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['xvm', 'application/xv+xml'],\n ['xvml', 'application/xv+xml'],\n ['xwd', 'image/x-xwindowdump'],\n ['xyz', 'chemical/x-xyz'],\n ['xz', 'application/x-xz'],\n ['yaml', 'text/yaml'],\n ['yang', 'application/yang'],\n ['yin', 'application/yin+xml'],\n ['yml', 'text/yaml'],\n ['ymp', 'text/x-suse-ymp'],\n ['z', 'application/x-compress'],\n ['z1', 'application/x-zmachine'],\n ['z2', 'application/x-zmachine'],\n ['z3', 'application/x-zmachine'],\n ['z4', 'application/x-zmachine'],\n ['z5', 'application/x-zmachine'],\n ['z6', 'application/x-zmachine'],\n ['z7', 'application/x-zmachine'],\n ['z8', 'application/x-zmachine'],\n ['zaz', 'application/vnd.zzazz.deck+xml'],\n ['zip', 'application/zip'],\n ['zir', 'application/vnd.zul'],\n ['zirz', 'application/vnd.zul'],\n ['zmm', 'application/vnd.handheld-entertainment+xml'],\n ['zsh', 'text/x-scriptzsh']\n]);\nexport function toFileWithPath(file, path, h) {\n const f = withMimeType(file);\n const { webkitRelativePath } = file;\n const p = typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : `./${file.name}`;\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n setObjProp(f, 'path', p);\n }\n if (h !== undefined) {\n Object.defineProperty(f, 'handle', {\n value: h,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n // Always populate a relative path so that even electron apps have access to a relativePath value\n setObjProp(f, 'relativePath', p);\n return f;\n}\nfunction withMimeType(file) {\n const { name } = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n const ext = name.split('.')\n .pop().toLowerCase();\n const type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\nfunction setObjProp(f, key, value) {\n Object.defineProperty(f, key, {\n value,\n writable: false,\n configurable: false,\n enumerable: true\n });\n}\n//# sourceMappingURL=file.js.map","import { __awaiter } from \"tslib\";\nimport { toFileWithPath } from './file';\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function* () {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return getDataTransferFiles(evt.dataTransfer, evt.type);\n }\n else if (isChangeEvt(evt)) {\n return getInputFiles(evt);\n }\n else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n return getFsHandleFiles(evt);\n }\n return [];\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(file => toFileWithPath(file));\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function* () {\n const files = yield Promise.all(handles.map(h => h.getFile()));\n return files.map(file => toFileWithPath(file));\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function* () {\n // IE11 does not support dataTransfer.items\n // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n if (dt.items) {\n const items = fromList(dt.items)\n .filter(item => item.kind === 'file');\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return items;\n }\n const files = yield Promise.all(items.map(toFilePromises));\n return noIgnoredFiles(flatten(files));\n }\n return noIgnoredFiles(fromList(dt.files)\n .map(file => toFileWithPath(file)));\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n const files = [];\n // tslint:disable: prefer-for-of\n for (let i = 0; i < items.length; i++) {\n const file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n const entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item, entry);\n}\nfunction flatten(items) {\n return items.reduce((acc, files) => [\n ...acc,\n ...(Array.isArray(files) ? flatten(files) : [files])\n ], []);\n}\nfunction fromDataTransferItem(item, entry) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n // Check if we're in a secure context; due to a bug in Chrome (as far as we know)\n // the browser crashes when calling this API (yet to be confirmed as a consistent behaviour).\n //\n // See:\n // - https://issues.chromium.org/issues/40186242\n // - https://github.com/react-dropzone/react-dropzone/issues/1397\n if (globalThis.isSecureContext && typeof item.getAsFileSystemHandle === 'function') {\n const h = yield item.getAsFileSystemHandle();\n if (h === null) {\n throw new Error(`${item} is not a File`);\n }\n // It seems that the handle can be `undefined` (see https://github.com/react-dropzone/file-selector/issues/120),\n // so we check if it isn't; if it is, the code path continues to the next API (`getAsFile`).\n if (h !== undefined) {\n const file = yield h.getFile();\n file.handle = h;\n return toFileWithPath(file);\n }\n }\n const file = item.getAsFile();\n if (!file) {\n throw new Error(`${item} is not a File`);\n }\n const fwp = toFileWithPath(file, (_a = entry === null || entry === void 0 ? void 0 : entry.fullPath) !== null && _a !== void 0 ? _a : undefined);\n return fwp;\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function* () {\n return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n const reader = entry.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n function readEntries() {\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries((batch) => __awaiter(this, void 0, void 0, function* () {\n if (!batch.length) {\n // Done reading directory\n try {\n const files = yield Promise.all(entries);\n resolve(files);\n }\n catch (err) {\n reject(err);\n }\n }\n else {\n const items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n }\n }), (err) => {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n entry.file((file) => {\n const fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, (err) => {\n reject(err);\n });\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n\n if (acceptedFilesArray.length === 0) {\n return true;\n }\n\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport _accepts from \"attr-accept\";\nvar accepts = typeof _accepts === \"function\" ? _accepts : _accepts.default; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n};\n/**\n *\n * @param {string} accept\n */\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr() {\n var accept = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var acceptArr = accept.split(\",\");\n var msg = acceptArr.length > 1 ? \"one of \".concat(acceptArr.join(\", \")) : acceptArr[0];\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(msg)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n};\n/**\n * Check if the given file is a DataTransferItem with an empty type.\n *\n * During drag events, browsers may return DataTransferItem objects instead of File objects.\n * Some browsers (e.g., Chrome) return an empty MIME type for certain file types (like .md files)\n * on DataTransferItem during drag events, even though the type is correctly set during drop.\n *\n * This function detects such cases by checking for:\n * 1. Empty type string\n * 2. Presence of getAsFile method (indicates it's a DataTransferItem, not a File)\n *\n * We accept these during drag to provide proper UI feedback, while maintaining\n * strict validation during drop when real File objects are available.\n *\n * @param {File | DataTransferItem} file\n * @returns {boolean}\n */\n\nexport function isDataTransferItemWithEmptyType(file) {\n return file.type === \"\" && typeof file.getAsFile === \"function\";\n}\n/**\n * Check if file is accepted.\n *\n * Firefox versions prior to 53 return a bogus MIME type for every file drag,\n * so dragovers with that MIME type will always be accepted.\n *\n * Chrome/other browsers may return an empty MIME type for files during drag events,\n * so we accept those as well (we'll validate properly on drop).\n *\n * @param {File} file\n * @param {string} accept\n * @returns\n */\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept) || isDataTransferItemWithEmptyType(file);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || v === \"application/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index.js\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: false,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject True only during an active drag when some dragged files would be rejected. After drop, this resets to false. Use fileRejections for post-drop errors.\n * @param {boolean} params.isDragGlobal Files are being dragged anywhere on the document\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected. This persists after drop and is the source of truth for post-drop rejections.\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event|Array<FileSystemFileHandle>)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected. This is the authoritative source for post-drop file rejections.\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event|Array<FileSystemFileHandle>)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject True only during an active drag when some dragged files would be rejected. After drop, this resets to false. Use fileRejections for post-drop errors.\n * @property {boolean} isDragGlobal Files are being dragged anywhere on the document\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected. This persists after drop and is the source of truth for post-drop rejections.\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n isDragGlobal: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * The second parameter (fileRejections) is the authoritative list of rejected files after a drop.\n * Use this parameter or the fileRejections state property to handle post-drop file rejections,\n * as isDragReject only indicates rejection state during active drag operations.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject<HTMLElement>}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n var globalDragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Track global drag state for document-level drag events\n\n useEffect(function () {\n var onDocumentDragEnter = function onDocumentDragEnter(event) {\n globalDragTargetsRef.current = [].concat(_toConsumableArray(globalDragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n dispatch({\n isDragGlobal: true,\n type: \"setDragGlobal\"\n });\n }\n };\n\n var onDocumentDragLeave = function onDocumentDragLeave(event) {\n // Only deactivate once we've left all children\n globalDragTargetsRef.current = globalDragTargetsRef.current.filter(function (el) {\n return el !== event.target && el !== null;\n });\n\n if (globalDragTargetsRef.current.length > 0) {\n return;\n }\n\n dispatch({\n isDragGlobal: false,\n type: \"setDragGlobal\"\n });\n };\n\n var onDocumentDragEnd = function onDocumentDragEnd() {\n globalDragTargetsRef.current = [];\n dispatch({\n isDragGlobal: false,\n type: \"setDragGlobal\"\n });\n };\n\n var onDocumentDropGlobal = function onDocumentDropGlobal() {\n globalDragTargetsRef.current = [];\n dispatch({\n isDragGlobal: false,\n type: \"setDragGlobal\"\n });\n };\n\n document.addEventListener(\"dragenter\", onDocumentDragEnter, false);\n document.addEventListener(\"dragleave\", onDocumentDragLeave, false);\n document.addEventListener(\"dragend\", onDocumentDragEnd, false);\n document.addEventListener(\"drop\", onDocumentDropGlobal, false);\n return function () {\n document.removeEventListener(\"dragenter\", onDocumentDragEnter);\n document.removeEventListener(\"dragleave\", onDocumentDragLeave);\n document.removeEventListener(\"dragend\", onDocumentDragEnd);\n document.removeEventListener(\"drop\", onDocumentDropGlobal);\n };\n }, [rootRef]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n border: 0,\n clip: \"rect(0, 0, 0, 0)\",\n clipPath: \"inset(50%)\",\n height: \"1px\",\n margin: \"0 -1px -1px 0\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections,\n isDragReject: false\n });\n\n case \"setDragGlobal\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragGlobal: action.isDragGlobal\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils/index.js\";","import CloseIcon from '@mui/icons-material/Close';\nimport SearchIcon from '@mui/icons-material/Search';\nimport Dialog from '@mui/material/Dialog';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport List from '@mui/material/List';\nimport Box from '@mui/material/Box';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport Typography from '@mui/material/Typography';\nimport React, { useEffect, useRef, useState } from 'react';\nimport Loading from './Loading.js';\nimport InputField from './InputField.js';\n\nfunction Search({\n propertyName,\n label,\n value = null,\n handleValueChange,\n disabled = false,\n search,\n searchResults = [],\n loading = false,\n priorityFunction = null,\n onResultSelect,\n resultLimit = null,\n resultsInModal = false,\n showResultsList = true,\n clearSearch,\n searchOnEnter = true,\n onKeyPressFunctions = [],\n helperText = 'PRESS ENTER TO SEARCH',\n autoFocus = true,\n visible = true,\n displayChips = false,\n fullWidth = false,\n handleOnBlur = null\n}) {\n const [dialogOpen, setDialogOpen] = useState(false);\n const [hasSearched, setHasSearched] = useState(false);\n const [resultsHidden, setResultsHidden] = useState(false);\n const listRef = useRef(null);\n\n const focusInput = () => {\n setTimeout(() => {\n document.getElementById(propertyName)?.focus();\n }, 0);\n };\n\n const focusResultAt = index => {\n const items = listRef.current?.querySelectorAll('[data-search-result]');\n if (items?.length) {\n items[Math.max(0, Math.min(index, items.length - 1))].focus();\n }\n };\n\n // When the results modal opens (and results are ready), move focus straight\n // onto the first result so it can be navigated and selected by keyboard.\n useEffect(() => {\n if (resultsInModal && dialogOpen && !loading) {\n const timer = setTimeout(() => focusResultAt(0), 0);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [resultsInModal, dialogOpen, loading]);\n\n const hideResults = () => {\n if (resultsInModal) {\n setDialogOpen(false);\n } else {\n setResultsHidden(true);\n }\n focusInput();\n };\n\n const handleQueryChange = (name, newValue) => {\n // Starting a new query should bring back a list the user dismissed with\n // Escape. This covers searchOnEnter={false}, where there is no Enter\n // press to reset the hidden state.\n setResultsHidden(false);\n handleValueChange(name, newValue);\n };\n\n const handleListKeyDown = event => {\n // The handler sits on both the results List and (for the modal) the\n // Dialog. Stop propagation once handled so a keypress originating on a\n // result isn't processed again as it bubbles up, which would skip items.\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n hideResults();\n return;\n }\n const items = listRef.current?.querySelectorAll('[data-search-result]');\n if (!items?.length) {\n return;\n }\n const currentIndex = Array.from(items).indexOf(document.activeElement);\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n event.stopPropagation();\n focusResultAt(currentIndex + 1);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n if (currentIndex <= 0) {\n // In the modal the input sits outside the dialog's focus trap,\n // so returning focus to it is unreliable — keep focus on the\n // first result. Inline, hop back up to the input.\n if (resultsInModal) {\n focusResultAt(0);\n } else {\n focusInput();\n }\n } else {\n focusResultAt(currentIndex - 1);\n }\n }\n };\n\n const countMatchingCharacters = (item, searchTerm) => {\n let count = 0;\n if (searchTerm) {\n for (let i = 0; i < searchTerm.length; i += 1) {\n if (item.name.toUpperCase()[i] === searchTerm.toUpperCase()[i]) {\n count += 1;\n }\n }\n }\n return count;\n };\n\n const selectResult = item => {\n clearSearch();\n if (resultsInModal) {\n setDialogOpen(false);\n }\n onResultSelect(item);\n setHasSearched(false);\n focusInput();\n };\n\n const resultItem = item => (\n <ListItemButton\n data-search-result\n tabIndex={-1}\n sx={{ padding: theme => theme.spacing(2) }}\n onClick={() => selectResult(item)}\n >\n <Stack spacing={3} direction=\"row\">\n <Typography\n data-testid=\"result\"\n sx={{ fontWeight: theme => theme.typography.fontWeightBold }}\n >\n {item.name}\n </Typography>\n <Typography sx={{ color: theme => theme.palette.text.primary }}>\n {item.description}\n </Typography>\n {displayChips && (\n <Stack\n direction=\"row\"\n justifyContent=\"flex-start\"\n alignItems=\"flex-start\"\n spacing={1}\n divider={<Divider orientation=\"vertical\" flexItem />}\n >\n {item.chips?.map(c => (\n <Chip\n id={c.text}\n key={c.text}\n label={c.text}\n sx={{ backgroundColor: c.color }}\n />\n ))}\n </Stack>\n )}\n </Stack>\n </ListItemButton>\n );\n\n const priority = (item, searchTerm) => {\n if (priorityFunction === 'closestMatchesFirst') {\n return countMatchingCharacters(item, searchTerm);\n }\n return priorityFunction(item, searchTerm);\n };\n\n const results = () => {\n if (loading) {\n return <Loading />;\n }\n\n let result = searchResults;\n\n if (priorityFunction) {\n result = result\n .map(i => ({\n ...i,\n priority: priority(i, value)\n }))\n .sort((a, b) => b.priority - a.priority);\n }\n\n if (resultLimit) {\n result = result.slice(0, resultLimit);\n }\n\n if (result?.length > 0 || !hasSearched) {\n return (\n <List dense ref={listRef} onKeyDown={handleListKeyDown}>\n {result.map(r => (\n <Box key={r.id}>\n {resultItem(r)}\n <Divider component=\"li\" />\n </Box>\n ))}\n </List>\n );\n }\n return <Typography>No matching items</Typography>;\n };\n\n return (\n <>\n <InputField\n visible={visible}\n value={value}\n propertyName={propertyName}\n label={label}\n autoFocus={autoFocus}\n adornment={<SearchIcon />}\n onChange={handleQueryChange}\n helperText={helperText}\n fullWidth={fullWidth}\n textFieldProps={{\n disabled,\n onKeyDown: data => {\n if (searchOnEnter && data.keyCode === 13) {\n if (resultsInModal && showResultsList) {\n setDialogOpen(true);\n }\n setResultsHidden(false);\n search(value);\n setHasSearched(true);\n } else if (data.key === 'Escape') {\n hideResults();\n } else if (data.key === 'ArrowDown' && showResultsList) {\n data.preventDefault();\n focusResultAt(0);\n }\n onKeyPressFunctions.forEach(element => {\n if (data.keyCode === element.keyCode) {\n element.action();\n }\n });\n },\n onBlur: handleOnBlur ? handleOnBlur : null\n }}\n />\n {showResultsList &&\n (resultsInModal ? (\n <Dialog\n data-testid=\"modal\"\n open={dialogOpen}\n onKeyDown={handleListKeyDown}\n fullWidth\n maxWidth=\"md\"\n >\n <Box>\n <IconButton\n sx={{\n float: 'right'\n }}\n aria-label=\"Close\"\n onClick={() => setDialogOpen(false)}\n size=\"large\"\n >\n <CloseIcon />\n </IconButton>\n <Box\n sx={{\n margin: theme => theme.spacing(6),\n minWidth: theme => theme.spacing(62)\n }}\n >\n {loading ? <Loading /> : results()}\n </Box>\n </Box>\n </Dialog>\n ) : (\n !resultsHidden && results()\n ))}\n </>\n );\n}\n\nexport default Search;\n","import React from 'react';\nimport { DataGrid, gridClasses } from '@mui/x-data-grid';\nimport Grid from '@mui/material/Grid';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { Link } from 'react-router-dom';\n\nfunction ReportDataGrid({\n report,\n renderZeroes = false,\n titleVariant = 'h6',\n showHeader = true,\n showExport = false,\n showTotals = false,\n openLinksInNewTabs = true,\n fixedRowHeight = false,\n showRowCount = false\n}) {\n // Rendering cell with drill-down functionality\n const renderCell = params => {\n const hasDrillDown = params.row[`${params.field}DrillDown`]?.url;\n if (hasDrillDown) {\n if (params.row[`${params.field}DrillDown`].external) {\n return (\n <a\n target={openLinksInNewTabs ? '_blank' : ''}\n rel={openLinksInNewTabs ? 'noopener noreferrer' : ''}\n href={params.row[`${params.field}DrillDown`].url}\n >\n {params.formattedValue}\n </a>\n );\n }\n return (\n <Link\n target={openLinksInNewTabs ? '_blank' : ''}\n rel={openLinksInNewTabs ? 'noopener noreferrer' : ''}\n to={params.row[`${params.field}DrillDown`].url}\n >\n {params.formattedValue}\n </Link>\n );\n }\n\n if (fixedRowHeight) {\n return (\n <Tooltip title={params.formattedValue}>\n <span>{params.formattedValue}</span>\n </Tooltip>\n );\n }\n\n return <span>{params.formattedValue}</span>;\n };\n\n // Define columns dynamically from the report data\n const columns = report.headers.dataGridColumnSpecifications.map((c, i) => {\n const spec = report.headers.dataGridColumnSpecifications[i];\n const isDate = spec.columnType === 'date';\n\n return {\n field: c.columnId,\n headerName: report.headers.columnHeaders[i],\n align: spec.align,\n headerAlign: spec.align,\n width: spec.columnWidth,\n cellClassName: report.headers.totalColumns?.includes(i) ? 'totalColumn' : '',\n // Date columns sort/filter chronologically on the backend-supplied ISO sort value\n // while still displaying the backend's formatted string (see valueFormatter below).\n ...(isDate && {\n type: 'date',\n valueGetter: (value, row) => {\n const sortValue = row[`${c.columnId}SortValue`];\n return sortValue ? new Date(sortValue) : null;\n }\n }),\n valueFormatter: (value, row) => {\n // For date columns `value` is the Date used only for sorting; show the display string.\n if (isDate) {\n return row[c.columnId];\n }\n\n if (spec.columnType === 'number' && (value || value === 0 || value === '0')) {\n const { decimalPlaces } = spec;\n const numberFormat = Intl.NumberFormat('en-GB', {\n minimumFractionDigits: decimalPlaces ?? 2,\n maximumFractionDigits: decimalPlaces ?? 99\n });\n\n return numberFormat.format(value);\n }\n\n return value;\n },\n renderCell\n };\n });\n\n // Map rows from the report data\n let rows = report.results.map(r => {\n const values = columns.reduce((acc, col, i) => {\n let val = r.values[i]?.textDisplayValue ?? r.values[i]?.displayValue;\n if ((val === 0 || val === '0') && !renderZeroes) {\n val = '';\n }\n\n acc[col.field] = val;\n\n // Carry the backend sort key (e.g. ISO date) so date columns sort chronologically.\n const sortValue = r.values[i]?.sortValue;\n if (sortValue) {\n acc[`${col.field}SortValue`] = sortValue;\n }\n\n const drillDowns = r.values[i]?.drillDowns;\n const hasDrilldown = drillDowns?.length;\n if (hasDrilldown) {\n acc[`${col.field}DrillDown`] = {\n url: drillDowns[0].href,\n external: drillDowns[0].externalLink\n };\n }\n\n const attributes = r.values[i]?.attributes;\n const hasAttributes = attributes?.length;\n if (hasAttributes) {\n acc[`${col.field}Attributes`] = attributes;\n }\n\n return acc;\n }, {});\n return { id: r.rowTitle.displayString, rowType: r.rowType, ...values };\n });\n\n // Configure slots based on props\n let slots = {};\n if (!showHeader) {\n slots = {\n columnHeaders: () => null\n };\n }\n\n // Add totals row if required\n if (showTotals) {\n const { totals, headers } = report;\n const totalsValues = headers.dataGridColumnSpecifications.reduce((acc, spec, i) => {\n let totalVal = totals.values[i]?.displayValue;\n\n if ((totalVal === 0 || totalVal === '0') && !renderZeroes) {\n totalVal = '';\n }\n\n acc[spec.columnId] = totalVal;\n\n return acc;\n }, {});\n rows = [...rows, { id: 'ReportDataGridTotalsRow', ...totalsValues }];\n }\n\n // Define row class based on row id\n const getRowClass = params => {\n if (params.id === 'ReportDataGridTotalsRow') {\n return 'totalLine'; // This will be handled by sx\n }\n\n if (params.row.rowType === 'Subtotal' || params.row.rowType === 'Total') {\n return 'totalLine';\n }\n\n return null;\n };\n\n // Define title element\n const titleHasDrilldowns = report.title?.drillDowns?.length;\n const title = () => (\n <Typography variant={titleVariant}>{report.title.displayString}</Typography>\n );\n\n const colourStyles = {};\n rows.forEach(row => {\n columns.forEach(col => {\n const attributes = row[`${col.field}Attributes`];\n if (attributes) {\n attributes.forEach(attribute => {\n if (attribute.attributeType === 'background-colour') {\n const className = `cell-bg-${attribute.attributeValue.replace('#', '')}`;\n colourStyles[`.${className}`] = {\n backgroundColor: attribute.attributeValue\n };\n }\n });\n attributes.forEach(attribute => {\n if (attribute.attributeType === 'text-colour') {\n const className = `cell-tc-${attribute.attributeValue.replace('#', '')}`;\n colourStyles[`.${className}`] = {\n color: attribute.attributeValue\n };\n }\n });\n }\n });\n });\n\n // Fixed height style condition\n const fullPages = rows?.length >= 100;\n const fixedHeightStyle = { height: '100vh' };\n\n return (\n <Grid container spacing={3}>\n <Grid size={12} sx={{ marginBottom: '-10px' }}>\n {titleHasDrilldowns ? (\n <a\n target={openLinksInNewTabs ? '_blank' : ''}\n rel={openLinksInNewTabs ? 'noopener noreferrer' : ''}\n href={report.title.drillDowns[0].href}\n >\n {title()}\n </a>\n ) : (\n title()\n )}\n </Grid>\n <Grid size={12} sx={fullPages ? fixedHeightStyle : {}}>\n <DataGrid\n rows={rows}\n columns={columns}\n slots={slots}\n showToolbar={showExport}\n density=\"compact\"\n getRowHeight={() => (fixedRowHeight ? 30 : 'auto')}\n disableRowSelectionOnClick\n getRowClassName={getRowClass}\n hideFooter={rows.length <= 100}\n getCellClassName={params => {\n const attributes = params.row[`${params.field}Attributes`];\n if (attributes) {\n let classes = '';\n for (const attribute of attributes) {\n if (attribute.attributeType === 'text-colour') {\n classes += `cell-tc-${attribute.attributeValue.replace('#', '')} `;\n }\n if (attribute.attributeType === 'background-colour') {\n classes += `cell-bg-${attribute.attributeValue.replace('#', '')} `;\n }\n }\n\n return classes.trim();\n }\n\n return '';\n }}\n sx={{\n [`& .${gridClasses.cell}`]: {\n py: 1,\n whiteSpace: fixedRowHeight ? '' : 'normal !important',\n wordWrap: fixedRowHeight ? '' : 'break-word !important',\n wordBreak: fixedRowHeight ? '' : 'break-word !important',\n lineHeight: fixedRowHeight ? 1 : '1.5 !important'\n },\n [`& .${gridClasses.row}`]: {\n maxHeight: 'none !important'\n },\n '.totalLine': {\n fontWeight: 'bolder'\n },\n '.totalColumn': {\n fontWeight: 'bold'\n },\n ...colourStyles\n }}\n />\n </Grid>\n {showRowCount && report && report.results && (\n <Grid size={12} sx={{ mt: -1.25 }}>\n <Typography\n variant=\"body2\"\n sx={{\n float: 'left',\n pl: 2\n }}\n >\n Number of rows: {report.results.length}\n </Typography>\n </Grid>\n )}\n </Grid>\n );\n}\n\nexport default ReportDataGrid;\n","import React from 'react';\nimport InputLabel from '@mui/material/InputLabel';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Tooltip from '@mui/material/Tooltip';\nimport LinkIcon from '@mui/icons-material/Link';\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\n\nconst LinkValue = React.forwardRef(function LinkValue(\n {\n value,\n disabled,\n external,\n to,\n openLinksInNewTabs,\n label,\n toolTip,\n className,\n id,\n onFocus,\n onBlur\n },\n ref\n) {\n const sx = { display: 'block', font: 'inherit', lineHeight: 'inherit' };\n\n if (disabled) {\n return (\n <Typography ref={ref} component=\"span\" className={className} id={id} sx={sx}>\n {value}\n </Typography>\n );\n }\n\n const Icon = openLinksInNewTabs ? OpenInNewIcon : LinkIcon;\n\n return (\n <Tooltip\n title={toolTip ?? `Open ${label || 'link'}${openLinksInNewTabs ? ' in a new tab' : ''}`}\n describeChild\n >\n <Link\n ref={ref}\n className={className}\n id={id}\n onFocus={onFocus}\n onBlur={onBlur}\n target={openLinksInNewTabs ? '_blank' : ''}\n rel={openLinksInNewTabs ? 'noopener noreferrer' : ''}\n variant=\"body1\"\n underline=\"none\"\n color=\"inherit\"\n sx={{ ...sx, position: 'relative', cursor: 'pointer' }}\n {...(external ? { href: to } : { component: RouterLink, to })}\n >\n {value}\n <Icon\n sx={{\n position: 'absolute',\n right: 14,\n top: '50%',\n transform: 'translateY(-50%)',\n fontSize: 18,\n color: 'action.active',\n pointerEvents: 'none'\n }}\n />\n </Link>\n </Tooltip>\n );\n});\n\nfunction LinkField({\n value = '',\n openLinksInNewTabs = false,\n to,\n external = true,\n disabled = false,\n label = '',\n toolTip = null,\n shouldRender = true\n}) {\n if (!shouldRender) {\n return '';\n }\n\n return (\n <>\n {label && (\n <InputLabel\n sx={{\n fontSize: theme => theme.typography.fontSize,\n color: 'inherit'\n }}\n >\n {label}\n </InputLabel>\n )}\n <OutlinedInput\n sx={{\n paddingTop: 0,\n color: 'text.disabled',\n marginTop: theme => theme.spacing(1),\n '& .MuiInputBase-input': {\n paddingRight: disabled ? undefined : 5\n },\n '&:not(.Mui-disabled):hover .MuiOutlinedInput-notchedOutline': {\n borderColor: 'primary.main',\n borderWidth: 2\n },\n '&:not(.Mui-disabled):focus-within .MuiOutlinedInput-notchedOutline': {\n borderColor: 'primary.main',\n borderWidth: 2\n }\n }}\n fullWidth\n size=\"small\"\n margin=\"dense\"\n disabled={disabled}\n readOnly\n value={value ?? ''}\n inputComponent={LinkValue}\n slotProps={{ input: { external, to, openLinksInNewTabs, label, toolTip } }}\n />\n </>\n );\n}\n\nexport default LinkField;\n","import { useCallback, useState } from 'react';\nimport { useAuth } from 'react-oidc-context';\n\nfunction useGet(url, requiresAuth = false) {\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n const [result, setResult] = useState(null);\n\n const auth = useAuth();\n\n const clearData = () => setResult(null);\n\n const send = useCallback(\n async (id, queryString) => {\n setIsLoading(true);\n setResult(null);\n setErrorMessage(null);\n\n let token = requiresAuth ? auth.user?.access_token : ''; // Moved inside useCallback\n\n const headers = {\n accept: 'application/json'\n };\n const requestParameters = {\n method: 'GET',\n headers: requiresAuth ? { ...headers, Authorization: `Bearer ${token}` } : headers\n };\n\n try {\n const response = await fetch(\n id ? `${url}/${id}${queryString ?? ''}` : `${url}${queryString ?? ''}`,\n requestParameters\n );\n\n if (response.ok) {\n setResult(await response.json());\n } else {\n setErrorMessage(await response.text());\n }\n } catch (error) {\n setErrorMessage(error.message);\n } finally {\n setIsLoading(false);\n }\n },\n [requiresAuth, auth.user?.access_token, url]\n );\n\n return { send, isLoading, errorMessage, result, clearData };\n}\n\nexport default useGet;\n","import React, { useState } from 'react';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport InputLabel from '@mui/material/InputLabel';\nimport TextField from '@mui/material/TextField';\n\nfunction AutoComplete({\n label,\n options = [],\n value = null,\n onChange,\n getOptionLabel,\n isOptionEqualToValue,\n matchesInput,\n idField,\n labelField,\n required = false,\n disabled = false,\n disableClearable = false\n}) {\n const [inputValue, setInputValue] = useState(null);\n\n // Convenience mode: when idField/labelField are supplied the three option callbacks are derived\n // from them, and `value`/`onChange` speak the plain id (not the option object) — so a caller passing\n // a coded list just gives the field names and works in ids. Omit them for the original object-mode\n // API where the caller supplies the callbacks and the value/onChange are the whole option object.\n const resolvedGetOptionLabel =\n getOptionLabel ??\n (labelField\n ? option => option?.[labelField] ?? (idField ? String(option[idField]) : '')\n : option => `${option ?? ''}`);\n\n const resolvedIsOptionEqualToValue =\n isOptionEqualToValue ??\n (idField ? (option, selected) => option?.[idField] === selected?.[idField] : undefined);\n\n const resolvedMatchesInput =\n matchesInput ??\n (idField ? (option, typed) => String(option?.[idField]) === typed : undefined);\n\n // In id mode, resolve the incoming id to its option object for display and emit the id back out.\n const selectedOption = idField\n ? (options.find(option => option?.[idField] === value) ?? null)\n : value;\n const emitChange = idField ? option => onChange(option?.[idField] ?? null) : onChange;\n\n const optionLabel = option => resolvedGetOptionLabel(option);\n\n const handleBlur = () => {\n const typedValue = inputValue?.trim();\n if (typedValue) {\n const matchingOption = options.find(\n option =>\n optionLabel(option).toUpperCase() === typedValue.toUpperCase() ||\n resolvedMatchesInput?.(option, typedValue)\n );\n if (matchingOption) emitChange(matchingOption);\n }\n setInputValue(null);\n };\n\n return (\n <Autocomplete\n size=\"small\"\n autoHighlight\n disableClearable={disableClearable}\n options={options}\n value={selectedOption}\n inputValue={inputValue ?? (selectedOption ? optionLabel(selectedOption) : '')}\n getOptionLabel={optionLabel}\n isOptionEqualToValue={resolvedIsOptionEqualToValue}\n onChange={(_, option) => {\n emitChange(option);\n setInputValue(null);\n }}\n onInputChange={(_, newValue, reason) => {\n if (reason === 'input') setInputValue(newValue);\n if (reason === 'clear') setInputValue('');\n }}\n onBlur={handleBlur}\n disabled={disabled}\n renderInput={params => (\n <>\n <InputLabel\n required={required}\n sx={{\n fontSize: theme => theme.typography.fontSize,\n color: 'inherit',\n '& .MuiInputLabel-asterisk': {\n color: theme => theme.palette.error.main\n }\n }}\n htmlFor={params.id}\n >\n {label}\n </InputLabel>\n <TextField\n {...params}\n sx={{ paddingTop: 0, marginTop: theme => theme.spacing(1) }}\n margin=\"dense\"\n size=\"small\"\n required={required}\n variant=\"outlined\"\n />\n </>\n )}\n />\n );\n}\n\nexport default AutoComplete;\n","import React, { useRef, useState } from 'react';\nimport { gridExpandedSortedRowIdsSelector, useGridApiRef, GridSearchIcon } from '@mui/x-data-grid';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport Search from '../components/Search.js';\n\n// Shared in-grid-search mechanics for a NORMAL MUI DataGrid, distilled from the hand-rolled copies in\n// PurchaseLedgerSplitDebitCredit / CashbookTransaction (finance) and SalesOrder (sales). You keep your\n// own <DataGrid> and spread these onto it:\n//\n// const search = useEditableSearchGrid({ rows, setRows, columns, onRowChange, groupValidations });\n// <DataGrid\n// apiRef={search.apiRef}\n// columns={search.columns}\n// onCellKeyDown={search.handleCellKeyDown}\n// processRowUpdate={search.processRowUpdate}\n// sx={search.gridSx}\n// ... any other DataGrid prop ...\n// />\n// {search.searchDialogs}\n//\n// It makes NO API calls and uses NO redux — the consumer fetches (useGet), holds `rows`, does the\n// code lookups in `onRowChange`, and supplies each search column's `searchResults`.\n//\n// A `type:'search'` column is an editable text cell with two ways to fill it:\n// - type a code you know and press Tab -> the edit commits in one press (processRowUpdate pads it and\n// fires onRowChange) and focus advances; the consumer's onRowChange does the direct lookup.\n// - press Enter (or click the cell's search icon) -> a modal <Search> opens, pre-seeded with what you\n// typed, to find the value by description.\n//\n// `groupValidations` colours cells: when a group's isValid(row) is false, every field in it gets the\n// invalid class (yellow by default — see `gridSx`).\n\nconst DEFAULT_INVALID_CLASS = 'invalidCode';\n\nconst padCode = (value, width) => {\n if (!width || value == null) {\n return value;\n }\n\n const text = `${value}`;\n return text.length && text.length < width ? text.padStart(width, '0') : value;\n};\n\nfunction useEditableSearchGrid({\n rows = [],\n setRows,\n columns = [],\n getRowId = row => row.id,\n onRowChange,\n groupValidations = []\n}) {\n const apiRef = useGridApiRef();\n const [searchDialog, setSearchDialog] = useState({ forRow: null, forColumn: null });\n const [searchTerm, setSearchTerm] = useState('');\n // The cell to refocus once the search dialog has fully closed (set when a result is picked).\n const pendingFocusRef = useRef(null);\n\n const searchColumns = columns.filter(c => c.type === 'search');\n\n const closeDialog = () => setSearchDialog({ forRow: null, forColumn: null });\n\n // The invalid class for a field, if any group validation covering it is currently failing.\n const invalidClassForField = (field, row) => {\n const failing = groupValidations.find(\n g =>\n g.fields.includes(field) &&\n typeof g.isValid === 'function' &&\n g.isValid(row) === false\n );\n return failing ? (failing.invalidClassName ?? DEFAULT_INVALID_CLASS) : '';\n };\n\n const searchRenderCell = params => (\n // flex + full height so the icon and the value are vertically centred together; a bare\n // fragment lets the value fall to its baseline against the taller icon and sit low in the cell.\n <span style={{ display: 'flex', alignItems: 'center', height: '100%' }}>\n <GridSearchIcon\n style={{ cursor: 'pointer', marginRight: 4, flexShrink: 0 }}\n onClick={() => {\n setSearchTerm(`${params.value ?? ''}`);\n setSearchDialog({ forRow: params.id, forColumn: params.field });\n }}\n />\n {params.value}\n </span>\n );\n\n // Decorate each column: search columns get the icon renderer; every column's cellClassName merges\n // the caller's own class with the group-validation (invalid) class.\n const decoratedColumns = columns.map(c => {\n const withRenderer =\n c.type === 'search'\n ? {\n ...c,\n editable: c.editable ?? true,\n renderCell: c.renderCell ?? searchRenderCell\n }\n : c;\n\n return {\n ...withRenderer,\n cellClassName: params => {\n const own =\n typeof c.cellClassName === 'function'\n ? c.cellClassName(params)\n : (c.cellClassName ?? '');\n return [own, invalidClassForField(c.field, params.row)].filter(Boolean).join(' ');\n }\n };\n });\n\n const handleCellKeyDown = (params, event) => {\n // Enter on a search cell opens the dialog, pre-seeded with whatever has been typed.\n if (event.keyCode === 13 && params.colDef.type === 'search') {\n const inputEl = apiRef.current\n .getCellElement(params.id, params.field)\n ?.querySelector('input');\n setSearchTerm(`${inputEl?.value ?? params.value ?? ''}`);\n setSearchDialog({ forRow: params.id, forColumn: params.field });\n // onCellKeyDown fires before MUI enters edit mode, so a freshly focused (view-mode) cell is\n // not editing yet - stopCellEditMode throws if called on a non-editing cell. Guard it like\n // the Tab branch does.\n if (apiRef.current.getCellMode(params.id, params.field) === 'edit') {\n apiRef.current.stopCellEditMode({\n id: params.id,\n field: params.field,\n ignoreModifications: true\n });\n }\n // defaultMuiPrevented (NOT preventDefault) is what stops the grid's own Enter handler from\n // starting edit mode on this cell behind the dialog. Without it MUI opens an empty editor\n // underneath; selecting a result writes the code to the row, but committing that stale empty\n // editor on the next Tab wipes the code back out (the \"name filled, code blank\" bug).\n event.defaultMuiPrevented = true;\n event.preventDefault();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n // Forms-style Tab traversal (from SalesOrder): move to the next/previous cell, wrapping rows.\n const rowIds = gridExpandedSortedRowIdsSelector(apiRef.current.state);\n const visibleColumns = apiRef.current.getVisibleColumns();\n const current = {\n rowIndex: rowIds.findIndex(id => id === params.id),\n colIndex: apiRef.current.getColumnIndex(params.field)\n };\n\n const atLastCell =\n current.colIndex === visibleColumns.length - 1 &&\n current.rowIndex === rowIds.length - 1 &&\n !event.shiftKey;\n const atFirstCell = current.colIndex === 0 && current.rowIndex === 0 && event.shiftKey;\n if (atLastCell || atFirstCell) {\n return;\n }\n\n event.preventDefault();\n\n const next = { ...current };\n if (!event.shiftKey) {\n if (next.colIndex < visibleColumns.length - 1) {\n next.colIndex += 1;\n } else {\n next.rowIndex += 1;\n next.colIndex = 0;\n }\n } else if (next.colIndex > 0) {\n next.colIndex -= 1;\n } else {\n next.rowIndex -= 1;\n next.colIndex = visibleColumns.length - 1;\n }\n\n // Commit the edit before leaving (this is what makes type-a-code-then-Tab work in one press,\n // rather than needing an extra Enter first).\n if (apiRef.current.getCellMode(params.id, params.field) === 'edit') {\n apiRef.current.stopCellEditMode({ id: params.id, field: params.field });\n }\n\n apiRef.current.scrollToIndexes(next);\n apiRef.current.setCellFocus(rowIds[next.rowIndex], visibleColumns[next.colIndex].field);\n };\n\n // Pad every search column's code to its declared width. Exposed so a consumer that needs its own\n // processRowUpdate (extra per-row logic) can still reuse the padding.\n const padSearchCodes = row => {\n const updated = { ...row };\n searchColumns.forEach(c => {\n updated[c.field] = padCode(updated[c.field], c.pad);\n });\n return updated;\n };\n\n const processRowUpdate = (newRow, oldRow) => {\n let changedField;\n const updated = { ...newRow };\n\n searchColumns.forEach(c => {\n if (updated[c.field] !== oldRow?.[c.field]) {\n changedField = c.field;\n updated[c.field] = padCode(updated[c.field], c.pad);\n }\n });\n\n setRows(current => current.map(r => (getRowId(r) === getRowId(updated) ? updated : r)));\n onRowChange?.(updated, oldRow, changedField);\n return updated;\n };\n\n const writeResultToRow = (column, selected) => {\n const rowId = searchDialog.forRow;\n const currentRow = rows.find(r => getRowId(r) === rowId);\n const code = selected[column.resultIdField ?? 'id'] ?? selected.id;\n let updated = { ...currentRow, [column.field]: padCode(code, column.pad) };\n column.updateFields?.forEach(f => {\n updated = { ...updated, [f.field]: selected[f.from] };\n });\n\n setRows(current => current.map(r => (getRowId(r) === rowId ? updated : r)));\n onRowChange?.(updated, currentRow, column.field);\n\n // Refocus the originating cell once the dialog has fully closed (handled in the dialog's\n // transition onExited), so Tab carries on to the next cell in the row instead of the page\n // dropping focus to the top. Restoring on exit rather than now avoids racing the dialog's own\n // focus handling.\n pendingFocusRef.current = { rowId, field: column.field };\n closeDialog();\n };\n\n const searchDialogs = (\n <>\n {searchColumns.map(c => (\n <Dialog\n key={c.field}\n open={searchDialog.forColumn === c.field}\n onClose={closeDialog}\n slotProps={{\n // The transition's onExited fires after the dialog has fully closed (and after\n // MUI has done its own focus restoration), so this is the point to put focus back\n // on the grid cell - Tab then carries on to the next cell in the row instead of\n // the page dropping focus to the top. NB: in MUI v6+ this lives under\n // slotProps.transition; the old top-level TransitionProps is ignored.\n transition: {\n onExited: () => {\n const pending = pendingFocusRef.current;\n pendingFocusRef.current = null;\n const api = apiRef.current;\n if (!pending || !api) {\n return;\n }\n // Sync the grid's own focus/roving-tabindex state...\n api.setCellFocus(pending.rowId, pending.field);\n // ...but setCellFocus refuses to move DOM focus while the active element\n // is still inside a portal (MUI guards against stealing focus from a\n // dialog), and our two closing modals leave focus astray - so move DOM\n // focus onto the cell element directly too. Tab then resumes from the cell.\n // Repeat on the next frame in case a closing modal reclaims focus just\n // after onExited.\n const focusCell = () =>\n api.getCellElement(pending.rowId, pending.field)?.focus();\n focusCell();\n requestAnimationFrame(focusCell);\n }\n }\n }}\n >\n <DialogTitle>Search {c.headerName}</DialogTitle>\n <DialogContent>\n <Search\n autoFocus\n resultsInModal\n resultLimit={100}\n propertyName={`${c.field}-search`}\n label={c.headerName}\n value={searchTerm}\n handleValueChange={(_, newValue) => setSearchTerm(newValue)}\n search={c.search}\n searchResults={c.searchResults?.map(r => {\n // Search ranks/renders via item.name (name.toUpperCase()), so a result\n // that only carries a code (e.g. { departmentCode, description }) must\n // still get a string name or ranking a non-empty search throws.\n const id = r[c.resultIdField ?? c.field] ?? r.id;\n return { ...r, id, name: r.name ?? `${id ?? ''}` };\n })}\n loading={c.searchLoading}\n priorityFunction=\"closestMatchesFirst\"\n onResultSelect={selected => writeResultToRow(c, selected)}\n clearSearch={() => setSearchTerm('')}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={closeDialog}>Close</Button>\n </DialogActions>\n </Dialog>\n ))}\n </>\n );\n\n // Spread onto the DataGrid's own sx so the default invalid class renders yellow.\n const gridSx = {\n [`& .${DEFAULT_INVALID_CLASS}`]: { color: 'black', backgroundColor: 'yellow' }\n };\n\n return {\n apiRef,\n columns: decoratedColumns,\n handleCellKeyDown,\n processRowUpdate,\n padSearchCodes,\n searchDialogs,\n gridSx\n };\n}\n\nexport default useEditableSearchGrid;\n","import React, { useState } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport Close from '@mui/icons-material/Close';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport SaveBackCancelButtons from './SaveBackCancelButtons.js';\nimport InputField from './InputField.js';\nimport Loading from './Loading.js';\nimport Search from './Search.js';\n\nfunction AddressUtility({\n createAddress,\n createAddressLoading = false,\n selectAddress,\n searchCountries,\n searchAddresses,\n countriesSearchResults = [],\n countriesSearchLoading = false,\n addressSearchResults = [],\n addressSearchLoading = false,\n clearAddressesSearch = () => {},\n clearCountriesSearch = () => {},\n defaultAddressee = false,\n isActive,\n setIsActive\n}) {\n const [address, setAddress] = useState({ addressee: defaultAddressee });\n const [addressSearchTerm, setAddressSearchTerm] = useState('');\n const [countrySearchTerm, setCountrySearchTerm] = useState('');\n\n const handleFieldChange = (propertyName, newValue) => {\n setAddress(a => ({ ...a, [propertyName]: newValue }));\n };\n\n const close = () => {\n setIsActive(false);\n };\n\n const open = () => {\n setIsActive(true);\n };\n\n const chips = a => {\n const result = [{ text: a.addressId }, { text: a.addressee }, { text: a.line1 }];\n if (a.postCode) {\n result.push({ text: a.postCode });\n }\n if (a.countryCode) {\n result.push({ text: a.countryCode });\n }\n return result;\n };\n\n return (\n <>\n <Grid container>\n <Grid size={12}>\n <Button variant=\"outlined\" onClick={open}>\n Create Or Look Up Address\n </Button>\n </Grid>\n </Grid>\n <Dialog open={isActive} maxWidth=\"md\">\n <Box\n sx={{\n position: 'relative',\n margin: 6,\n minWidth: 62\n }}\n >\n <IconButton\n sx={{\n position: 'absolute',\n top: 8,\n right: 8\n }}\n aria-label=\"Close\"\n onClick={close}\n >\n <Close />\n </IconButton>\n <Grid container spacing={3}>\n <Grid size={12}>\n <Typography variant=\"h6\">Create or Look Up Address</Typography>\n </Grid>\n <Grid size={12}>\n <Search\n propertyName=\"salesAccount\"\n label=\"Look up an address\"\n value={addressSearchTerm}\n handleValueChange={(_, newVal) => setAddressSearchTerm(newVal)}\n search={searchAddresses}\n searchResults={addressSearchResults.map(a => ({\n ...a,\n chips: chips(a)\n }))}\n loading={addressSearchLoading}\n displayChips\n resultsInModal\n onResultSelect={x => {\n selectAddress(x);\n close();\n }}\n clearSearch={clearAddressesSearch}\n />\n </Grid>\n <Grid size={12}>\n <Typography variant=\"subtitle1\">\n Or Enter details and click save to create a new address\n </Typography>\n </Grid>\n {createAddressLoading ? (\n <Loading />\n ) : (\n <>\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.addressee}\n label=\"Addressee\"\n propertyName=\"addressee\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.addressee2}\n label=\"Addressee 2\"\n propertyName=\"addressee2\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.line1}\n label=\"Line 1\"\n propertyName=\"line1\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.line2}\n label=\"Line 2\"\n propertyName=\"line2\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.line3}\n label=\"Line 3\"\n propertyName=\"line3\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.line4}\n label=\"Line 4\"\n propertyName=\"line4\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.postCode}\n label=\"Postcode\"\n propertyName=\"postCode\"\n onChange={handleFieldChange}\n />\n </Grid>\n <Grid size={4} />\n <Grid size={4}>\n <Search\n propertyName=\"countryCode\"\n label=\"Look up Countries\"\n value={countrySearchTerm}\n handleValueChange={(_, newVal) =>\n setCountrySearchTerm(newVal)\n }\n search={searchCountries}\n searchResults={countriesSearchResults}\n loading={countriesSearchLoading}\n autoFocus={false}\n resultsInModal\n priorityFunction={(i, searchTerm) => {\n if (i.countryCode === searchTerm?.toUpperCase()) {\n return 1;\n }\n return 0;\n }}\n onResultSelect={newValue => {\n setCountrySearchTerm(newValue.countryCode);\n setAddress(a => ({\n ...a,\n countryCode: newValue.countryCode,\n countryName: newValue.countryName\n }));\n }}\n clearSearch={clearCountriesSearch}\n />\n </Grid>\n <Grid size={8}>\n <InputField\n fullWidth\n value={address?.countryName}\n label=\"Name\"\n propertyName=\"countryName\"\n onChange={() => {}}\n />\n </Grid>\n <Grid size={12}>\n <SaveBackCancelButtons\n saveDisabled={!address?.addressee || !address?.countryCode}\n backClick={close}\n saveClick={() => {\n createAddress(address);\n }}\n cancelClick={close}\n />\n </Grid>\n </>\n )}\n </Grid>\n </Box>\n </Dialog>\n </>\n );\n}\n\nexport default AddressUtility;\n","import React from 'react';\nimport Button from '@mui/material/Button';\n\nfunction BackButton({ backClick, text = null }) {\n return (\n <div style={{ float: 'left' }}>\n <Button id=\"back-button\" onClick={backClick}>\n {text || 'Back'}\n </Button>\n </div>\n );\n}\n\nexport default BackButton;\n","import React from 'react';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\n\nfunction ConfirmDialog({\n visible,\n title = 'Are you sure?',\n confirmButtonText = 'Confirm',\n cancelButtonText = 'Cancel',\n primaryText = null,\n secondaryText = null,\n onConfirm,\n maxWidth = 'md',\n onCancel = null,\n closeDialog\n}) {\n return (\n <Dialog open={visible} fullWidth maxWidth={maxWidth}>\n <DialogTitle variant=\"h4\">{title}</DialogTitle>\n\n <DialogContent dividers>\n {primaryText && <Typography variant=\"h6\">{primaryText}</Typography>}\n {secondaryText && <Typography>{secondaryText}</Typography>}\n </DialogContent>\n <DialogActions>\n <Button\n onClick={() => {\n closeDialog();\n onCancel?.();\n }}\n variant=\"outlined\"\n >\n {cancelButtonText}\n </Button>\n <Button\n variant=\"contained\"\n onClick={() => {\n closeDialog();\n onConfirm();\n }}\n >\n {confirmButtonText}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n\nexport default ConfirmDialog;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport Button from '@mui/material/Button';\n\nfunction CreateButton({ createUrl, disabled = false }) {\n return (\n <Link to={createUrl} style={{ textDecoration: 'none' }}>\n <Button color=\"primary\" variant=\"outlined\" sx={{ float: 'right' }} disabled={disabled}>\n Create\n </Button>\n </Link>\n );\n}\n\nexport default CreateButton;\n","import React from 'react';\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\nimport InputLabel from '@mui/material/InputLabel';\nimport moment from 'moment';\n\nfunction Picker({\n value = new Date().toISOString(),\n minDate = null,\n maxDate = null,\n label = '',\n onChange = () => {},\n required = false,\n disabled = false,\n datePickerProps = null\n}) {\n return (\n <>\n <InputLabel sx={theme => theme.typography.fontSize} required={required}>\n {label}\n </InputLabel>\n <DatePicker\n format=\"DD/MM/YYYY\"\n slotProps={{\n textField: {\n variant: 'outlined',\n fullWidth: true,\n size: 'small',\n sx: {\n mt: 1\n }\n }\n }}\n value={value ? moment(value) : null}\n minDate={minDate ? moment(minDate) : null}\n maxDate={maxDate ? moment(maxDate) : null}\n onChange={onChange}\n disabled={disabled}\n {...datePickerProps}\n />\n </>\n );\n}\n\nexport default Picker;\n","import React from 'react';\nimport { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';\nimport InputLabel from '@mui/material/InputLabel';\nimport moment from 'moment';\n\nfunction Picker({\n label = '',\n value = new Date().toISOString(),\n onChange = () => {},\n minDate = undefined,\n maxDate = undefined,\n required = false,\n disabled = false\n}) {\n return (\n <>\n <InputLabel sx={theme => theme.typography.fontSize} required={required}>\n {label}\n </InputLabel>\n <DateTimePicker\n ampm={false}\n value={moment(value)}\n minDate={moment(minDate)}\n maxDate={moment(maxDate)}\n onChange={onChange}\n disabled={disabled}\n format=\"DD/MM/YYYY HH:mm\"\n slotProps={{\n textField: {\n variant: 'outlined',\n fullWidth: true,\n size: 'small',\n sx: {\n mt: 1\n }\n }\n }}\n />\n </>\n );\n}\n\nexport default Picker;\n","import React, { useState } from 'react';\nimport Button from '@mui/material/Button';\nimport Tooltip from '@mui/material/Tooltip';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport Loading from './Loading.js';\n\nfunction ExportButton({\n href,\n accept = 'text/csv',\n fileName = 'export.csv',\n buttonText = 'EXPORT',\n tooltipText = 'Download report as CSV file',\n disabled = false,\n accessToken = null\n}) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(false);\n\n let h = {\n Accept: accept\n };\n\n if (accessToken) {\n h = { ...h, Authorization: `Bearer ${accessToken}` };\n }\n\n const download = () =>\n fetch(href, {\n headers: new Headers(h)\n })\n .then(response => {\n if (!response.ok) {\n throw new Error('Network response was not OK');\n }\n return response.blob();\n })\n .then(blob => {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n a.remove();\n })\n .then(() => setLoading(false))\n .catch(() => {\n setError(true);\n setLoading(false);\n alert('Download failed');\n });\n\n return (\n <div style={{ float: 'right' }}>\n <Tooltip title={tooltipText} placement=\"top-end\">\n {loading ? (\n <Loading />\n ) : (\n <Button\n variant=\"outlined\"\n disabled={disabled}\n color={error ? 'secondary' : 'primary'}\n onClick={() => {\n setLoading(true);\n setError(false);\n download();\n }}\n >\n {error ? 'Retry' : buttonText}\n <SvgIcon>\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n d=\"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z\"\n />\n </SvgIcon>\n </Button>\n )}\n </Tooltip>\n </div>\n );\n}\n\nexport default ExportButton;\n","import React, { useState, useCallback } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport Accordion from '@mui/material/Accordion';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ErrorCard from './ErrorCard.js';\nimport SnackbarMessage from './SnackbarMessage.js';\nimport Loading from './Loading.js';\n\nfunction FileUploader({\n helperText = 'Upload a File',\n title = 'File Uploader',\n initiallyExpanded = true,\n loading = false,\n result = null,\n snackbarVisible = false,\n setSnackbarVisible = null,\n initialFile = null,\n onFileSelect = () => {},\n doUpload\n}) {\n const [file, setFile] = useState(initialFile);\n const [expanded, setExpanded] = useState(initiallyExpanded);\n\n const onDrop = useCallback(\n acceptedFile => {\n setFile(acceptedFile[0]);\n onFileSelect(acceptedFile[0]);\n },\n [onFileSelect]\n );\n const { getRootProps, getInputProps } = useDropzone({ onDrop });\n\n const handleUploadClick = () => {\n const reader = new globalThis.FileReader();\n reader.onload = () => {\n const binaryStr = reader.result;\n doUpload(binaryStr);\n };\n reader.readAsArrayBuffer(file);\n setFile(null);\n };\n\n return (\n <>\n {snackbarVisible && (\n <SnackbarMessage\n visible={snackbarVisible && result?.success}\n onClose={() => setSnackbarVisible(false)}\n message={result?.message}\n />\n )}\n <Accordion expanded={expanded} onChange={() => setExpanded(!expanded)}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel2a-content\"\n id=\"panel2a-header\"\n >\n <Typography variant=\"h5\">{title}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Grid container spacing={3}>\n <Grid size={12}>\n <Typography variant=\"subtitle1\">{helperText}</Typography>\n </Grid>\n {loading ? (\n <Grid size={12}>\n <Loading />\n </Grid>\n ) : (\n <>\n <Grid size={12}>\n <Box\n sx={{ border: '1px dashed grey', margin: '10px' }}\n style={{ cursor: 'pointer' }}\n {...getRootProps()}\n >\n <Typography\n style={{ paddingTop: '10px', paddingBottom: '20px' }}\n variant=\"subtitle2\"\n >\n Drop the file here or click to browse...\n </Typography>\n <input {...getInputProps()} />\n\n {file && (\n <Chip\n label={file.name}\n color=\"primary\"\n onDelete={() => setFile(null)}\n variant=\"outlined\"\n />\n )}\n </Box>\n </Grid>\n <Grid size={11} />\n <Grid size={1}>\n <Button\n id=\"save-button\"\n variant=\"contained\"\n color=\"primary\"\n onClick={handleUploadClick}\n disabled={!file}\n >\n Upload\n </Button>\n </Grid>\n {result && !result.success && (\n <Grid size={12}>\n <ErrorCard\n errorMessage={result.message}\n detailLines={result?.errors}\n />\n </Grid>\n )}\n </>\n )}\n </Grid>\n </AccordionDetails>\n </Accordion>\n </>\n );\n}\n\nexport default FileUploader;\n","import React from 'react';\nimport AutoComplete from './AutoComplete.js';\nimport utilities from '../utilities/index.js';\n\n// Ledger-period binding over the generic AutoComplete. Callers pass the raw ledger-period list and a\n// numeric periodNumber as the value, and get a numeric periodNumber (or null) back from onChange — they\n// never touch the period objects or repeat the (identical everywhere) label/equality/match callbacks.\n// A ledger period is identified by its periodNumber and displayed by its monthName; options are sorted\n// by periodNumber and can be narrowed with an optional filter (e.g. periods on/after the current one).\nfunction LedgerPeriodAutoComplete({\n label,\n periods = [],\n value,\n onChange,\n filter,\n required = false,\n disabled = false,\n disableClearable = false\n}) {\n const options = utilities\n .sortEntityList(periods ?? [], 'periodNumber')\n .filter(period => (filter ? filter(period) : true));\n\n return (\n <AutoComplete\n label={label}\n options={options}\n idField=\"periodNumber\"\n labelField=\"monthName\"\n value={value}\n onChange={onChange}\n required={required}\n disabled={disabled}\n disableClearable={disableClearable}\n />\n );\n}\n\nexport default LedgerPeriodAutoComplete;\n","import React from 'react';\nimport Button from '@mui/material/Button';\nimport Tooltip from '@mui/material/Tooltip';\nimport Link from '@mui/material/Link';\n\nfunction LinkButton({\n to,\n external = false,\n newTab = false,\n tooltip = null,\n text,\n disabled = false\n}) {\n const button = (\n <Button\n color=\"primary\"\n aria-label=\"Search\"\n variant=\"outlined\"\n sx={{\n marginLeft: 1,\n marginTop: 3\n }}\n disabled={disabled}\n >\n {text}\n </Button>\n );\n\n const wrappedButton = tooltip ? (\n <Tooltip title={tooltip}>\n <div>{button}</div>\n </Tooltip>\n ) : (\n button\n );\n\n if (disabled) {\n return wrappedButton;\n }\n\n return (\n <div>\n {external ? (\n <a\n href={to}\n target={newTab ? '_blank' : '_self'}\n rel=\"noreferrer\"\n style={{\n textDecoration: 'none'\n }}\n >\n {wrappedButton}\n </a>\n ) : (\n <Link\n to={to}\n style={{\n textDecoration: 'none'\n }}\n >\n {wrappedButton}\n </Link>\n )}\n </div>\n );\n}\n\nexport default LinkButton;\n","import React, { useEffect, useState } from 'react';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport AppBar from '@mui/material/AppBar';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Toolbar from '@mui/material/Toolbar';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport { useSnackbar } from 'notistack';\nimport AccountCircle from '@mui/icons-material/AccountCircle';\nimport Search from '@mui/icons-material/Search';\nimport Notifications from '@mui/icons-material/Notifications';\nimport utilities from '../utilities/index.js';\nimport Panel from './Panel.js';\nimport SearchPanel from './SearchPanel.js';\n\nfunction Navigation({\n sections = null,\n loading = false,\n username = '',\n myStuff = null,\n notifications = [],\n handleSignOut = null\n}) {\n const [selected, setSelected] = useState(false);\n const [anchorEl, setAnchorEl] = useState();\n const [hoveredSectionId, setHoveredSectionId] = useState(null);\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n const styles = {\n root: {\n position: 'absolute',\n width: '100%',\n margin: 0,\n top: 0,\n zIndex: 10\n },\n tabLabel: {\n fontSize: '1rem',\n color: '#B0B0B0'\n },\n snackbarNew: {\n background: '#1a73e8',\n width: '800px'\n },\n snackbarSeen: {\n width: '800px'\n },\n menuButton: {\n marginLeft: -12,\n marginRight: 20\n },\n tab: {\n minWidth: '100px'\n },\n toolbar: {\n paddingLeft: 0,\n paddingRight: 0\n },\n tabs: {\n paddingLeft: 0,\n flexGrow: 1\n },\n container: {\n width: '100%',\n margin: 0\n },\n appBar: {\n backgroundColor: '#424242',\n width: '100% !important',\n margin: 0,\n position: 'fixed',\n zIndex: 1300\n },\n icons: {\n cursor: 'pointer',\n color: 'white'\n }\n };\n const handleClose = () => {\n setAnchorEl();\n };\n\n useEffect(() => {\n const handleKeyDown = event => {\n if (event.key === 'Escape') {\n setSelected(false);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n if (sections) {\n const menuIds = sections.map(item => item.id);\n const searchOpen = selected === sections.length;\n const hoveredTabIndex = searchOpen ? menuIds.indexOf(hoveredSectionId) : -1;\n const tabsValue = hoveredTabIndex !== -1 ? hoveredTabIndex : searchOpen ? false : selected;\n\n const handleClick = event => {\n setAnchorEl(event.currentTarget);\n };\n\n const actions = (key, e) => (\n <>\n <Button\n variant=\"contained\"\n onClick={() => {\n window.location = utilities.getSelfHref(e);\n }}\n >\n View\n </Button>\n <Button\n onClick={() => {\n closeSnackbar(key);\n localStorage.setItem(e.title, e.content);\n markNotificationSeen(e);\n }}\n >\n Dismiss\n </Button>\n </>\n );\n\n const noNotifications = () => {\n return notifications.length === 0;\n };\n\n const queueNotifications = () => {\n if (noNotifications()) {\n enqueueSnackbar('No notifications to show!', {\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'right'\n },\n variant: 'info',\n preventDuplicate: true\n });\n } else {\n notifications.forEach((e, i) => {\n setTimeout(() => {\n enqueueSnackbar(`${e.title} ${e.content}`, {\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'right'\n },\n ContentProps: {\n sx: {\n root: localStorage.getItem(e.title)\n ? styles.snackbarSeen\n : styles.snackbarNew\n }\n },\n action: key => actions(key, e),\n preventDuplicate: true\n });\n }, i * 200);\n });\n }\n };\n\n return (\n <ClickAwayListener onClickAway={() => setSelected(false)}>\n <div className=\"hide-when-printing\">\n <Grid container spacing={3}>\n {sections && !loading && (\n <AppBar position=\"static\" sx={styles.appBar}>\n <Toolbar>\n <Grid container spacing={3} sx={styles.container}>\n <Grid size={9}>\n <Tabs\n sx={styles.tabs}\n value={tabsValue}\n onChange={(event, value) => {\n if (selected === value) {\n setSelected(false);\n } else {\n setSelected(value);\n }\n }}\n scrollButtons=\"auto\"\n variant=\"scrollable\"\n indicatorColor=\"primary\"\n textColor=\"primary\"\n >\n {sections.map(item => (\n <Tab\n id={item.id}\n key={item.id}\n sx={styles.tab}\n label={\n <span style={styles.tabLabel}>\n {item.title}\n </span>\n }\n selected={false}\n />\n ))}\n </Tabs>\n </Grid>\n <Grid size={1}>\n <Typography variant=\"h4\">\n <AccountCircle\n sx={styles.icons}\n aria-owns={anchorEl ? 'simple-menu' : undefined}\n onClick={handleClick}\n id={sections.length}\n key={sections.length}\n />\n </Typography>\n </Grid>\n <Grid size={1}>\n <Typography variant=\"h4\">\n <Badge\n badgeContent={notifications.length}\n color=\"primary\"\n variant=\"dot\"\n >\n <Notifications\n sx={styles.icons}\n onClick={queueNotifications}\n />\n </Badge>\n </Typography>\n </Grid>\n <Grid size={1}>\n <Typography variant=\"h4\">\n <Search\n sx={styles.icons}\n onClick={() => setSelected(sections.length)}\n />\n </Typography>\n </Grid>\n <Menu\n id=\"simple-menu\"\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={handleClose}\n >\n <MenuItem onClick={handleClose}>{username}</MenuItem>\n {username &&\n myStuff.groups.map(item => (\n <span key={item.items[0].href}>\n <a href={item.items[0].href}>\n <MenuItem onClick={handleClose}>\n {item.items[0].title}\n </MenuItem>\n </a>\n </span>\n ))}\n {handleSignOut && (\n <MenuItem\n style={{\n color: 'blue',\n textDecoration: 'underline',\n cursor: 'pointer',\n background: 'none'\n }}\n onClick={handleSignOut}\n >\n Sign Out (Newer apps pages)\n </MenuItem>\n )}\n </Menu>\n </Grid>\n </Toolbar>\n </AppBar>\n )}\n </Grid>\n {menuIds.map(\n (item, i) =>\n selected === i && (\n <Panel\n key={item}\n section={sections.find(e => e.id === item)}\n id={item}\n style={{ align: 'right' }}\n anchorEl={item.id}\n close={() => setSelected(false)}\n />\n )\n )}\n {selected === sections.length && (\n <SearchPanel\n menu={sections}\n close={() => {\n setSelected(false);\n setHoveredSectionId(null);\n }}\n onHoverSection={setHoveredSectionId}\n />\n )}\n </div>\n </ClickAwayListener>\n );\n }\n return (\n <div style={styles.root}>\n <AppBar position=\"static\" color=\"default\">\n <Toolbar sx={styles.toolbar} />\n </AppBar>\n </div>\n );\n}\n\nexport default Navigation;\n","import React from 'react';\nimport Grid from '@mui/material/Grid';\nimport { Typography } from '@mui/material';\n\nfunction NotFound() {\n return (\n <Grid container alignItems=\"flex-start\" styles={{ alignItems: 'flex-start' }}>\n <Typography variant=\"h4\">Page Not Found</Typography>\n </Grid>\n );\n}\n\nexport default NotFound;\n","import React from 'react';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\n\nfunction OnOffSwitch({ onChange, propertyName, value = false, label, disabled }) {\n const change = () => {\n onChange(propertyName, !value);\n };\n\n return (\n <FormControlLabel\n control={\n <Switch\n checked={value}\n onChange={change}\n value={value}\n color=\"primary\"\n disabled={disabled}\n />\n }\n label={label}\n />\n );\n}\n\nexport default OnOffSwitch;\n","import React from 'react';\n\nimport Tooltip from '@mui/material/Tooltip';\nimport EditOffIcon from '@mui/icons-material/EditOff';\nimport ModeEditIcon from '@mui/icons-material/ModeEdit';\n\nfunction PermissionIndicator({\n hasPermission = false,\n hasPermissionMessage = 'You have permission for this page',\n noPermissionMessage = 'You do not have permission for this page'\n}) {\n const pullRightStyle = { float: 'right' };\n\n return hasPermission ? (\n <Tooltip title={hasPermissionMessage}>\n <ModeEditIcon color=\"primary\" sx={pullRightStyle} />\n </Tooltip>\n ) : (\n <Tooltip title={noPermissionMessage}>\n <EditOffIcon color=\"secondary\" sx={pullRightStyle} />\n </Tooltip>\n );\n}\n\nexport default PermissionIndicator;\n","import React from 'react';\n\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight';\nimport ArrowLeftIcon from '@mui/icons-material/ArrowLeft';\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\n\nfunction PrevNextButtons({\n goPrev = null,\n goNext = null,\n nextResult = '',\n prevResult = '',\n disabled = false\n}) {\n return (\n <>\n {goPrev ? (\n <Grid size={2}>\n <Button disabled={disabled} startIcon={<ArrowLeftIcon />} onClick={goPrev}>\n {prevResult}\n </Button>\n </Grid>\n ) : (\n <Grid size={2} />\n )}\n <Grid size={8} />\n {goNext ? (\n <Grid size={2}>\n <Button disabled={disabled} endIcon={<ArrowRightIcon />} onClick={goNext}>\n {nextResult}\n </Button>\n </Grid>\n ) : (\n <Grid size={2} />\n )}\n </>\n );\n}\n\nexport default PrevNextButtons;\n","import React from 'react';\n\nimport ReportDataGrid from './ReportDataGrid.js';\n\nfunction ReportDataGrids({\n reportData = [],\n renderZeroes = false,\n titlesVariant = 'h6',\n repeatHeaders = true,\n perReportExport = false,\n openLinksInNewTabs = true,\n showTotals = false,\n fixedRowHeight = false,\n showRowCount = false\n}) {\n return (\n <>\n {reportData.map((d, i) => (\n <ReportDataGrid\n key={d.title.displayString}\n report={d}\n showExport={perReportExport}\n showTotals={showTotals}\n fixedRowHeight={fixedRowHeight}\n renderZeroes={renderZeroes}\n titleVariant={titlesVariant}\n showHeader={repeatHeaders || i === 0}\n openLinksInNewTabs={openLinksInNewTabs}\n showRowCount={showRowCount}\n />\n ))}\n </>\n );\n}\n\nexport default ReportDataGrids;\n","import React from 'react';\nimport List from '@mui/material/List';\nimport Box from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport ListItemText from '@mui/material/ListItemText';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport IconButton from '@mui/material/IconButton';\nimport Divider from '@mui/material/Divider';\n\nfunction SelectedItemsList({\n items,\n removeItem = null,\n title = 'Items Selected',\n maxHeight = null\n}) {\n return (\n <>\n <Typography\n variant=\"body1\"\n sx={{\n marginBottom: '8px'\n }}\n >\n {title}\n </Typography>\n <List\n dense\n sx={{\n width: '100%',\n position: 'relative',\n overflow: 'auto',\n ...(maxHeight && { maxHeight })\n }}\n >\n {items.map(item => (\n <Box key={item.id ? item.id : item}>\n <ListItem\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: '8px 16px'\n }}\n >\n <ListItemText primary={item.displayText ? item.displayText : item} />\n {removeItem && (\n <IconButton\n aria-label=\"delete\"\n onClick={() => removeItem(item.id ? item.id : item)}\n size=\"large\"\n sx={{\n marginLeft: 'auto'\n }}\n >\n <DeleteIcon />\n </IconButton>\n )}\n </ListItem>\n <Divider />\n </Box>\n ))}\n </List>\n </>\n );\n}\n\nexport default SelectedItemsList;\n","import React, { useEffect } from 'react';\n\nconst initialiseOnMount = ComposedComponent =>\n function HOC(props) {\n // eslint-disable-next-line react/prop-types\n const { initialise, itemId } = props;\n useEffect(() => {\n if (initialise && itemId) {\n initialise({ itemId });\n } else if (initialise) {\n initialise(props);\n }\n }, [initialise, itemId]);\n\n return <ComposedComponent {...props} />;\n };\n\nexport default initialiseOnMount;\n","import { useEffect, useState } from 'react';\n\n// This hook returns debounced updates to a passed input value\n// The first returned value is only updated when the input value has been changed and the specified delay time has elapsed\n// The second returned value is a bool that tracks whether the value is currently being debounced\nfunction useDebounceValue(value, delay = 1000) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n const [isDebouncing, setIsDebouncing] = useState(false);\n\n useEffect(() => {\n setIsDebouncing(true);\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n setIsDebouncing(false);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return [debouncedValue, isDebouncing];\n}\n\nexport default useDebounceValue;\n","import { useState } from 'react';\nimport { useAuth } from 'react-oidc-context';\n\nfunction useDelete(url, requiresAuth = false) {\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n const [deleteResult, setDeleteResult] = useState(null);\n\n let token = '';\n\n const clearData = () => setDeleteResult(null);\n\n const auth = useAuth();\n if (requiresAuth) {\n token = auth.user?.access_token;\n }\n\n const send = async id => {\n setIsLoading(true);\n setDeleteResult(null);\n setErrorMessage(null);\n\n const headers = {\n accept: 'application/json',\n 'Content-Type': 'application/json'\n };\n const requestParameters = {\n method: 'DELETE',\n headers: requiresAuth ? { ...headers, Authorization: `Bearer ${token}` } : headers\n };\n\n const response = await fetch(`${url}/${id}`, requestParameters);\n if (response.ok) {\n setDeleteResult(await response.json());\n setIsLoading(false);\n } else {\n const text = await response.text();\n setErrorMessage(text);\n setIsLoading(false);\n }\n };\n return { send, isLoading, errorMessage, deleteResult, clearData };\n}\n\nexport default useDelete;","import { useState } from 'react';\nimport useGet from './useGet.js';\n\n// performs a single GET request once, as soon as the calling component is first mounted\n// the url is specified by the below parameters, where id and queryString are optional\nfunction useInitialise(url, id, queryString, requiresAuth = false) {\n const [hasFetched, setHasFetched] = useState(false);\n const { send, isLoading, errorMessage, result } = useGet(url, requiresAuth);\n\n if (!hasFetched) {\n send(id, queryString);\n setHasFetched(true);\n }\n return { isLoading, errorMessage, result };\n}\n\nexport default useInitialise;\n","import { useState, useRef, useCallback } from 'react';\nimport utilities from '../utilities/index.js';\nimport { useAuth } from 'react-oidc-context';\nimport { useNavigate } from 'react-router-dom';\n\nfunction usePost(url, requiresAuth = false, redirectOnSuccess = false) {\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n const [postResult, setPostResult] = useState(null);\n\n const navigate = useNavigate();\n const abortControllerRef = useRef(null);\n\n let token = '';\n const auth = useAuth();\n if (requiresAuth) {\n token = auth.user?.access_token;\n }\n\n const clearPostResult = useCallback(() => {\n setPostResult(null);\n setErrorMessage(null);\n }, []);\n\n const send = useCallback(\n async (id, data) => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n const controller = new AbortController();\n abortControllerRef.current = controller;\n\n setIsLoading(true);\n setPostResult(null);\n setErrorMessage(null);\n\n const headers = {\n accept: 'application/json',\n 'Content-Type': 'application/json'\n };\n\n const requestParameters = {\n method: 'POST',\n body: JSON.stringify(data),\n headers: requiresAuth ? { ...headers, Authorization: `Bearer ${token}` } : headers,\n signal: controller.signal\n };\n\n try {\n const response = await fetch(id ? `${url}/${id}` : url, requestParameters);\n\n if (response.ok) {\n const result = await response.json();\n setPostResult(result);\n if (redirectOnSuccess) {\n setPostResult(null);\n navigate(utilities.getSelfHref(result));\n }\n } else {\n const text = await response.text();\n setErrorMessage(text);\n }\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted.');\n } else {\n setErrorMessage('An error occurred.');\n }\n } finally {\n setIsLoading(false);\n }\n },\n [requiresAuth, token, url, redirectOnSuccess, navigate]\n );\n\n const cancelRequest = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { send, cancelRequest, isLoading, errorMessage, postResult, clearPostResult };\n}\n\nexport default usePost;\n","import { useLocation, useParams } from 'react-router-dom';\n\nexport default function usePreviousNextNavigation(\n urlBuilder,\n searchResults,\n navigateFunction,\n idStyle = 'param',\n idFieldName\n) {\n const { search } = useLocation();\n const params = new URLSearchParams(search);\n const { id } = useParams();\n\n let idField;\n\n if (idStyle === 'query') {\n idField = params.get(idFieldName);\n } else {\n idField = id;\n }\n\n const currentIndex = searchResults?.indexOf(idField);\n const currentResult = searchResults?.[currentIndex];\n const nextResult = searchResults?.[currentIndex + 1];\n const prevResult = searchResults?.[currentIndex - 1];\n\n const goNext = nextResult\n ? () => {\n navigateFunction(`${urlBuilder(nextResult)}`, { searchResults });\n }\n : null;\n const goPrev = prevResult\n ? () => {\n navigateFunction(`${urlBuilder(prevResult)}`, { searchResults });\n }\n : null;\n\n return [goPrev, goNext, prevResult, nextResult, currentResult];\n}\n","import { useState } from 'react';\nimport { useAuth } from 'react-oidc-context';\n\nfunction usePut(url, requiresAuth = false) {\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n\n const [putResult, setPutResult] = useState(null);\n\n let token = '';\n\n const clearPutResult = () => setPutResult(null);\n\n const auth = useAuth();\n if (requiresAuth) {\n token = auth.user?.access_token;\n }\n\n const send = async (id, data) => {\n setIsLoading(true);\n setPutResult(null);\n setErrorMessage(null);\n\n const headers = {\n accept: 'application/json',\n 'Content-Type': 'application/json'\n };\n const requestParameters = {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: requiresAuth ? { ...headers, Authorization: `Bearer ${token}` } : headers\n };\n\n const response = await fetch(id ? `${url}/${id}` : url, requestParameters);\n\n if (response.ok) {\n setPutResult(await response.json());\n setIsLoading(false);\n } else {\n const text = await response.text();\n setErrorMessage(text);\n setIsLoading(false);\n }\n };\n\n return { send, isLoading, errorMessage, putResult, clearPutResult };\n}\n\nexport default usePut;\n","import useGet from './useGet.js';\n\nfunction useSearch(\n url,\n idFieldKey = 'id',\n nameFieldKey = 'name',\n descriptionFieldKey = 'description',\n requiresAuth = false,\n itemsArray = false\n) {\n const { send, isLoading, result, clearData } = useGet(url, requiresAuth);\n\n // some old lookups like employees have stupid items array\n const results = itemsArray\n ? (result?.items.map(s => ({\n ...s,\n id: s[idFieldKey],\n name: s[nameFieldKey]?.toString(),\n description: s[descriptionFieldKey]\n })) ?? [])\n : (result?.map(s => ({\n ...s,\n id: s[idFieldKey],\n name: s[nameFieldKey]?.toString(),\n description: s[descriptionFieldKey]\n })) ?? []);\n const search = searchTerm => send(null, `?searchTerm=${searchTerm}`);\n const loading = isLoading;\n const clear = clearData;\n return { search, results, loading, clear };\n}\n\nexport default useSearch;\n","import { useEffect, useState } from 'react';\nimport { useAuth, hasAuthParams } from 'react-oidc-context';\n\nfunction useSignIn() {\n const auth = useAuth();\n\n const [hasTriedSignin, setHasTriedSignin] = useState(false);\n\n // automatically sign-in\n useEffect(() => {\n if (\n !hasAuthParams() &&\n !auth.isAuthenticated &&\n !auth.activeNavigator &&\n !auth.isLoading &&\n !hasTriedSignin\n ) {\n auth.signinRedirect();\n sessionStorage.setItem('auth:redirect', window.location.pathname);\n setHasTriedSignin(true);\n }\n }, [auth, hasTriedSignin]);\n}\n\nexport default useSignIn;\n","import { useAuth } from 'react-oidc-context';\n\nfunction useUserProfile() {\n const auth = useAuth();\n return {\n userNumber: auth?.user?.profile?.employee?.split('/')?.[2],\n userName: auth?.user?.profile?.preferred_username,\n name: auth?.user?.profile?.name\n };\n}\n\nexport default useUserProfile;\n"],"names":["Loading","_jsx","Box","sx","textAlign","margin","theme","spacing","height","children","CircularProgress","Breadcrumbs","navigate","rootPathLength","homeUrl","location","path","pathname","endsWith","substring","length","crumbs","split","filter","x","reduce","sofar","crumb","i","list","currentPath","slice","join","key","caption","href","onClick","e","preventDefault","_jsxs","style","marginLeft","Link","variant","cursor","_Fragment","map","index","Typography","display","SaveBackCancelButtons","saveClick","cancelClick","saveDisabled","backClick","showBackButton","editStatus","saveButtonLabelText","editing","float","Button","id","marginRight","color","disabled","hasValue","val","hasDisplayText","items","some","item","displayText","getOptions","allowNoValue","optionsLoading","options","push","ErrorCard","errorMessage","detailLines","Card","width","padding","backgroundColor","palette","error","light","Error","dark","align","d","descriptor","message","InputField","onChange","propertyName","type","adornment","fullWidth","helperText","label","maxLength","rows","name","placeholder","required","value","decimalPlaces","textFieldProps","autoFocus","onErrorStateChange","visible","autoComplete","inputRef","useRef","inErrorState","setInErrorState","useState","setErrorMessage","useEffect","setTimeout","current","focus","InputLabel","fontSize","typography","main","htmlFor","TextField","paddingTop","marginTop","multiline","size","onWheel","blur","newValue","target","parseFloat","indexOf","change","slotProps","input","startAdornment","InputAdornment","position","formHelperText","text","primary","onInput","pageWidth","xs","s","m","l","xl","columnWidth","getListItemText","entity","entityid","descriptionFieldName","SnackbarMessage","onClose","timeOut","Snackbar","anchorOrigin","vertical","horizontal","content","open","autoHideDuration","action","IconButton","CloseIcon","exports","hookCallback","hooks","apply","arguments","setHookCallback","callback","isArray","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","arr","fn","res","arrLen","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidOffset","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid$2","flags","parsedParts","isNowValid","_d","isNaN","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","_isValid","createInvalid$1","NaN","fun","t","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","isValid","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","argLen","stack","deprecations","deprecateSimple","isFunction","Function","aliases","D","dates","date","days","day","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","h","hours","hour","ms","milliseconds","millisecond","minutes","minute","M","months","month","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","w","weeks","week","W","isoweeks","isoweek","y","years","year","normalizeUnits","units","toLowerCase","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","sort","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","mom","output","formatMoment","invalidDate","cacheKey","expandFormat","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","get$2","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod$1","n","daysInMonth","modMonth","o","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","monthsParseProperties","clearMonthsParseCache","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse$1","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdayEnd","keys","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","weekdaysParseProperties","clearWeekdaysParseCache","localeWeekdays","_weekdays","_week","dow","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","add","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","set","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar$1","now","_calendar","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","formatCache","_longDateFormatCache","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","relativeTimeWithoutPostformat","withoutSuffix","string","isFuture","_relativeTime","relativeTime$1","postformat","pastFutureWithoutPostformat","diff","pastFuture","createDate","createUTCDate","UTC","firstWeekOffset","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYearFromDayOfYear","resWeek","weekOffset","weeksInYear","weekOfYear","weekOfYearFromDate","round","weekOffsetNext","localeWeek","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","charAt","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","calendar","dayOfMonthOrdinalParse","relativeTime","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","normalizedName","oldLocale","module","_abbr","require","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","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","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","c","currentDateArray","forWeek","hadWeekContext","weekContext","_isDefaultDatePartsForWeek","_getDefaultDateParts","currentDateNow","_defaultDatePartsNow","getDefaultDateParts","useWeekDefaults","nowValue","createLocal","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dateIsDefaulted","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","defaultDatePartsNow","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract$1","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","add$1","subtract$1","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","time","formats","sod","startOf","calendarFormat","clone$1","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString$1","keepOffset","toISOString","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","valueOf$1","unix","toObject","toJSON","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto$2","createUnix","createInZone","parseZone","preParsePostFormat","get","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","abs$1","addSubtract","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","SearchInputField","rest","xmlns","viewBox","utilities","getHref","itemWithLinks","rel","links","link","find","getSelfHref","sortList","sortEntityList","Panel","section","close","columns","Paper","zIndex","top","right","Close","Grid","container","col","md","lg","categories","showInMenu","category","List","dense","ListItem","paddingBottom","gutterBottom","title","entry","textDecoration","lineHeight","marginBottom","styles","paper","SearchPanel","menu","onHoverSection","searchTerm","setSearchTerm","menuEntries","useMemo","flatMap","sectionId","breadcrumb","uniqueEntries","uniques","sm","handleFieldChange","includes","onMouseEnter","onMouseLeave","onFocus","onBlur","gap","linnTheme","createTheme","cloneDate","moment","getWeekStartDate","dateClone","getWeekEndDate","CustomPickerDay","styled","PickerDay","shouldForwardProp","dayIsBetween","isFirstDay","isLastDay","borderRadius","common","white","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","styleInject","css","ref","insertAt","document","head","getElementsByTagName","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","objectAssign","shouldUseNative","assign","test1","test2","fromCharCode","test3","letter","err","symbols","TypeError","ReactPropTypesSecret_1","has","bind","printWarning","process","env","NODE_ENV","ReactPropTypesSecret","require$$0","loggedTypeFailures","require$$1","checkPropTypes","typeSpecs","componentName","getStack","typeSpecName","ex","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","bigint","bool","object","symbol","any","createAnyTypeChecker","createChainableTypeChecker","arrayOf","createArrayOfTypeChecker","typeChecker","validate","props","propName","propFullName","PropTypeError","propValue","getPropType","element","createElementTypeChecker","elementType","createElementTypeTypeChecker","isValidElementType","instanceOf","createInstanceTypeChecker","expectedClass","expectedClassName","getClassName","constructor","node","createNodeChecker","isNode","objectOf","createObjectOfTypeChecker","propType","oneOf","createEnumTypeChecker","expectedValues","is","valuesString","JSON","stringify","replacer","getPreciseType","oneOfType","createUnionTypeChecker","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedType","shape","createShapeTypeChecker","shapeTypes","invalidValidatorError","exact","createStrictShapeTypeChecker","allKeys","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","chainedCheckType","every","iteratorFn","getIteratorFn","maybeIterable","step","entries","done","isSymbol","PropTypes","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","isElement","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","rejected","adopt","then","SuppressedError","COMMON_MIME_TYPES","Map","toFileWithPath","file","f","withMimeType","lastIndexOf","ext","pop","defineProperty","writable","configurable","enumerable","webkitRelativePath","p","setObjProp","FILES_TO_IGNORE","v","noIgnoredFiles","files","fromList","toFilePromises","webkitGetAsEntry","fromDataTransferItem","isDirectory","fromDirEntry","flatten","acc","globalThis","isSecureContext","getAsFileSystemHandle","getFile","handle","getAsFile","fullPath","fromEntry","fromFileEntry","fwp","reader","createReader","readEntries","batch","all","es","default","acceptedFiles","acceptedFilesArray","fileName","mimeType","baseMimeType","validType","trim","_toConsumableArray","_arrayWithoutHoles","_arrayLikeToArray","_iterableToArray","iter","_unsupportedIterableToArray","_nonIterableSpread","ownKeys","enumerableOnly","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_s","_e","_arr","_n","_nonIterableRest","minLen","accepts","_accepts","getInvalidTypeRejectionErr","acceptArr","code","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","accept","isAcceptable","isDataTransferItemWithEmptyType","fileMatchSize","isDefined","isPropagationStopped","event","cancelBubble","isEvtWithFiles","dataTransfer","types","onDocumentDragOver","composeEventHandlers","_len","fns","_key","_len2","_key2","isMIMEType","isExt","_excluded","_excluded2","_excluded3","_excluded4","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceKeys","sourceSymbolKeys","Dropzone","forwardRef","_ref","_useDropzone","useDropzone","useImperativeHandle","React","Fragment","displayName","defaultProps","getFilesFromEvent","fromEvent","evt","isDataTransfer","getDataTransferFiles","dt","kind","isChangeEvt","getInputFiles","getFsHandleFiles","handles","Infinity","multiple","maxFiles","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","validator","useFsAccessApi","propTypes","onFileDialogCancel","onFileDialogOpen","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","onError","initialState","isFocused","isFileDialogActive","isDragActive","isDragAccept","isDragReject","isDragGlobal","fileRejections","_defaultProps$props","acceptAttr","acceptPropAsAcceptAttr","_ref6","_ref7","pickerTypes","pickerOptionsFromAccept","description","_ref2","_ref3","ok","agg","_ref4","_ref5","onFileDialogOpenCb","noop","onFileDialogCancelCb","rootRef","_useReducer2","useReducer","reducer","state","dispatch","fsAccessApiWorksRef","window","canUseFileSystemAccessAPI","onWindowFocus","addEventListener","removeEventListener","dragTargetsRef","globalDragTargetsRef","onDocumentDrop","contains","onDocumentDragEnter","onDocumentDragLeave","el","onDocumentDragEnd","onDocumentDropGlobal","onErrCb","useCallback","onDragEnterCb","persist","stopPropagation","fileCount","allFilesAccepted","accepted","sizeMatch","customErrors","catch","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targets","targetIdx","splice","setFiles","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","errors","onDropCb","openFileDialog","opts","showOpenFilePicker","isAbort","DOMException","ABORT_ERR","isSecurityError","SECURITY_ERR","click","onKeyDownCb","isEqualNode","keyCode","onFocusCb","onBlurCb","onClickCb","isIeOrEdge","userAgent","navigator","isIe","isEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","role","onKeyDown","tabIndex","onInputElementClick","getInputProps","_ref3$refKey","border","clip","clipPath","whiteSpace","Search","handleValueChange","search","searchResults","loading","priorityFunction","onResultSelect","resultLimit","resultsInModal","showResultsList","clearSearch","searchOnEnter","onKeyPressFunctions","displayChips","handleOnBlur","dialogOpen","setDialogOpen","hasSearched","setHasSearched","resultsHidden","setResultsHidden","listRef","focusInput","_document$getElementB","getElementById","focusResultAt","_listRef$current","querySelectorAll","timer","clearTimeout","hideResults","handleListKeyDown","_listRef$current2","currentIndex","activeElement","resultItem","_item$chips","ListItemButton","selectResult","Stack","fontWeight","fontWeightBold","justifyContent","alignItems","divider","Divider","orientation","flexItem","chips","Chip","results","_result","countMatchingCharacters","count","r","component","SearchIcon","handleQueryChange","Dialog","maxWidth","minWidth","ReportDataGrid","report","renderZeroes","titleVariant","showHeader","showExport","showTotals","openLinksInNewTabs","fixedRowHeight","showRowCount","_report$title","_report$title$drillDo","_rows","renderCell","params","_params$row","row","url","external","formattedValue","Tooltip","headers","dataGridColumnSpecifications","_report$headers$total","spec","columnType","columnId","headerName","columnHeaders","headerAlign","cellClassName","totalColumns","valueGetter","sortValue","valueFormatter","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","_r$values$i","_r$values$i2","_r$values$i3","_r$values$i4","_r$values$i5","textDisplayValue","displayValue","drillDowns","externalLink","attributes","rowTitle","displayString","rowType","slots","totals","totalsValues","_totals$values$i","totalVal","titleHasDrilldowns","colourStyles","attribute","attributeType","className","attributeValue","fullPages","DataGrid","showToolbar","density","getRowHeight","disableRowSelectionOnClick","getRowClassName","hideFooter","getCellClassName","classes","gridClasses","cell","py","wordWrap","wordBreak","maxHeight","mt","pl","LinkValue","toolTip","font","Icon","OpenInNewIcon","LinkIcon","describeChild","underline","RouterLink","transform","pointerEvents","useGet","requiresAuth","_auth$user2","isLoading","setIsLoading","setResult","auth","useAuth","send","async","queryString","_auth$user","user","access_token","requestParameters","method","Authorization","response","fetch","json","clearData","AutoComplete","getOptionLabel","isOptionEqualToValue","matchesInput","idField","labelField","disableClearable","inputValue","setInputValue","resolvedGetOptionLabel","option","resolvedIsOptionEqualToValue","selected","resolvedMatchesInput","typed","selectedOption","emitChange","optionLabel","Autocomplete","autoHighlight","_","onInputChange","reason","handleBlur","typedValue","matchingOption","renderInput","DEFAULT_INVALID_CLASS","padCode","padStart","AddressUtility","createAddress","createAddressLoading","selectAddress","searchCountries","searchAddresses","countriesSearchResults","countriesSearchLoading","addressSearchResults","addressSearchLoading","clearAddressesSearch","clearCountriesSearch","defaultAddressee","isActive","setIsActive","address","setAddress","addressee","addressSearchTerm","setAddressSearchTerm","countrySearchTerm","setCountrySearchTerm","addressId","line1","postCode","countryCode","newVal","addressee2","line2","line3","line4","countryName","BackButton","CheckboxWithLabel","checked","FormControlLabel","control","Checkbox","ConfirmDialog","confirmButtonText","cancelButtonText","primaryText","secondaryText","onConfirm","onCancel","closeDialog","DialogTitle","DialogContent","dividers","DialogActions","CreateButton","createUrl","Picker","minDate","maxDate","datePickerProps","DatePicker","textField","DateTimePicker","ampm","Dropdown","selectableItems","getSelectableItems","currentValue","filtered","hideFromEdit","currentItem","select","native","EntityList","entityList","entityId","hasExternalLinks","Component","button","ExportButton","buttonText","tooltipText","accessToken","setLoading","setError","Accept","placement","Headers","blob","URL","createObjectURL","download","body","remove","alert","SvgIcon","FileUploader","initiallyExpanded","snackbarVisible","setSnackbarVisible","initialFile","onFileSelect","doUpload","setFile","expanded","setExpanded","acceptedFile","success","Accordion","AccordionSummary","expandIcon","ExpandMoreIcon","AccordionDetails","onDelete","handleUploadClick","FileReader","onload","binaryStr","readAsArrayBuffer","LedgerPeriodAutoComplete","periods","LinkButton","newTab","tooltip","wrappedButton","LinkField","shouldRender","OutlinedInput","paddingRight","borderColor","borderWidth","readOnly","inputComponent","LinnWeekPicker","selectedDate","setWeekStartDate","pickersDayProps","start","end","Navigation","sections","username","myStuff","notifications","handleSignOut","setSelected","anchorEl","setAnchorEl","hoveredSectionId","setHoveredSectionId","enqueueSnackbar","closeSnackbar","useSnackbar","root","tabLabel","snackbarNew","background","snackbarSeen","tab","toolbar","paddingLeft","tabs","flexGrow","appBar","icons","handleClose","handleKeyDown","menuIds","searchOpen","hoveredTabIndex","tabsValue","handleClick","currentTarget","actions","localStorage","setItem","markNotificationSeen","noNotifications","queueNotifications","preventDuplicate","ContentProps","getItem","ClickAwayListener","onClickAway","AppBar","Toolbar","Tabs","scrollButtons","indicatorColor","textColor","Tab","AccountCircle","Badge","badgeContent","Notifications","Menu","Boolean","MenuItem","groups","NotFound","OnOffSwitch","Switch","Page","requestErrors","showRequestErrors","showBreadcrumbs","defaultAppTitle","square","PermissionIndicator","hasPermission","hasPermissionMessage","noPermissionMessage","pullRightStyle","ModeEditIcon","EditOffIcon","PrevNextButtons","goPrev","goNext","nextResult","prevResult","startIcon","ArrowLeftIcon","endIcon","ArrowRightIcon","ReportDataGrids","reportData","titlesVariant","repeatHeaders","perReportExport","SelectedItemsList","removeItem","ListItemText","DeleteIcon","ComposedComponent","HOC","initialise","itemId","useDebounceValue","delay","debouncedValue","setDebouncedValue","isDebouncing","setIsDebouncing","handler","useDelete","deleteResult","setDeleteResult","useEditableSearchGrid","setRows","getRowId","onRowChange","groupValidations","apiRef","useGridApiRef","searchDialog","setSearchDialog","forRow","forColumn","pendingFocusRef","searchColumns","invalidClassForField","failing","g","fields","invalidClassName","searchRenderCell","GridSearchIcon","flexShrink","decoratedColumns","editable","searchDialogs","_c$searchResults","transition","onExited","pending","api","setCellFocus","rowId","focusCell","_api$getCellElement","getCellElement","requestAnimationFrame","resultIdField","searchLoading","writeResultToRow","column","_column$updateFields","currentRow","updated","pad","updateFields","handleCellKeyDown","colDef","_apiRef$current$getCe","inputEl","querySelector","getCellMode","stopCellEditMode","ignoreModifications","defaultMuiPrevented","rowIds","gridExpandedSortedRowIdsSelector","visibleColumns","getVisibleColumns","rowIndex","findIndex","colIndex","getColumnIndex","atLastCell","shiftKey","atFirstCell","scrollToIndexes","processRowUpdate","newRow","oldRow","changedField","padSearchCodes","gridSx","useInitialise","hasFetched","setHasFetched","usePost","redirectOnSuccess","postResult","setPostResult","useNavigate","abortControllerRef","clearPostResult","abort","controller","AbortController","signal","log","cancelRequest","usePreviousNextNavigation","urlBuilder","navigateFunction","idStyle","idFieldName","useLocation","URLSearchParams","useParams","currentResult","usePut","putResult","setPutResult","clearPutResult","useSearch","idFieldKey","nameFieldKey","descriptionFieldKey","itemsArray","_s$nameFieldKey","_s$nameFieldKey2","clear","useSignIn","hasTriedSignin","setHasTriedSignin","hasAuthParams","isAuthenticated","activeNavigator","signinRedirect","sessionStorage","useUserProfile","_auth$user$profile","_auth$user$profile$em","_auth$user$profile$em2","_auth$user2$profile","_auth$user3","_auth$user3$profile","userNumber","profile","employee","userName","preferred_username"],"mappings":"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","x_google_ignoreList":[10,19,20,21,22,23,24,25,26,27,28,29,30,31,32]}