{"version":3,"file":"static/js/main.a8b0e42f.js","mappings":"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WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,QAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,YACxC,CAAI,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,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WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,WAAaA,EAAe,UAAY,YACnEA,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AAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,OAEf,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,QACV,QAAU,SAEd,CACI,EAAK,IACL,KAAQ,SACR,KAAQ,OACR,MAAQ,UACR,MAAQ,UACR,MAAQ,SACR,MAAQ,UACR,MAAQ,OACR,MAAQ,SACR,M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","sources":["../node_modules/@aws-sdk/util-utf8-browser/dist-es/index.js","../node_modules/@aws-sdk/util-utf8-browser/dist-es/whatwgEncodingApi.js","../node_modules/@aws-sdk/util-utf8-browser/dist-es/pureJs.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/react/dist/emotion-element-43c6fea0.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@httptoolkit/websocket-stream/node_modules/isarray/index.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/node_modules/safe-buffer/index.js","../node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/readable-browser.js","../node_modules/@httptoolkit/websocket-stream/node_modules/string_decoder/lib/string_decoder.js","../node_modules/@httptoolkit/websocket-stream/node_modules/string_decoder/node_modules/safe-buffer/index.js","../node_modules/@httptoolkit/websocket-stream/stream.js","../node_modules/@mui/icons-material/LocalFireDepartment.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/identifier.js","../node_modules/@mui/material/styles/slotShouldForwardProp.js","../node_modules/@mui/material/styles/rootShouldForwardProp.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/material/styles/useThemeProps.js","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/utils/createChainedFunction/createChainedFunction.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/debounce.js","../node_modules/@mui/utils/debounce/debounce.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/deprecatedPropType/deprecatedPropType.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/isMuiElement/isMuiElement.js","../node_modules/@mui/utils/ownerDocument/ownerDocument.js","../node_modules/@mui/material/utils/ownerDocument.js","../node_modules/@mui/material/utils/ownerWindow.js","../node_modules/@mui/utils/ownerWindow/ownerWindow.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/requirePropFactory/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/useEnhancedEffect.js","../node_modules/@mui/utils/useId/useId.js","../node_modules/@mui/material/utils/useId.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/unsupportedProp/unsupportedProp.js","../node_modules/@mui/material/utils/useControlled.js","../node_modules/@mui/utils/useControlled/useControlled.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/utils/useEventCallback/useEventCallback.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@mui/utils/useForkRef/useForkRef.js","../node_modules/@mui/utils/useIsFocusVisible/useIsFocusVisible.js","../node_modules/@mui/material/utils/useIsFocusVisible.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/system/colorManipulator.js","../node_modules/@mui/system/createStyled.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/merge.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/system/esm/style.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/utils/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/capitalize/capitalize.js","../node_modules/@mui/utils/clamp/clamp.js","../node_modules/@mui/utils/composeClasses/composeClasses.js","../node_modules/@mui/utils/deepmerge/deepmerge.js","../node_modules/@mui/utils/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/utils/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/utils/getDisplayName/getDisplayName.js","../node_modules/@mui/utils/resolveProps/resolveProps.js","../node_modules/@mui/utils/setRef/setRef.js","../node_modules/@mui/utils/useEnhancedEffect/useEnhancedEffect.js","../node_modules/@mui/utils/useLazyRef/useLazyRef.js","../node_modules/@mui/utils/useOnMount/useOnMount.js","../node_modules/@mui/utils/useTimeout/useTimeout.js","../node_modules/@smithy/property-provider/dist-es/ProviderError.js","../node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js","../node_modules/@smithy/property-provider/dist-es/chain.js","../node_modules/@smithy/property-provider/dist-es/memoize.js","../node_modules/aws-crt/lib/browser.ts","../node_modules/aws-crt/lib/browser/auth.ts","../node_modules/aws-crt/lib/browser/aws_iot.ts","../node_modules/aws-crt/lib/browser/aws_iot_mqtt5.ts","../node_modules/aws-crt/lib/browser/crypto.ts","../node_modules/aws-crt/lib/browser/error.ts","../node_modules/aws-crt/lib/browser/http.ts","../node_modules/aws-crt/lib/browser/io.ts","../node_modules/aws-crt/lib/browser/iot.ts","../node_modules/aws-crt/lib/browser/mqtt.ts","../node_modules/aws-crt/lib/browser/mqtt5.ts","../node_modules/aws-crt/lib/browser/mqtt5_utils.ts","../node_modules/aws-crt/lib/browser/polyfills.ts","../node_modules/aws-crt/lib/browser/trie.ts","../node_modules/aws-crt/lib/browser/ws.ts","../node_modules/aws-crt/lib/common/aws_iot_shared.ts","../node_modules/aws-crt/lib/common/cancel.ts","../node_modules/aws-crt/lib/common/event.ts","../node_modules/aws-crt/lib/common/http.ts","../node_modules/aws-crt/lib/common/io.ts","../node_modules/aws-crt/lib/common/mqtt.ts","../node_modules/aws-crt/lib/common/mqtt5.ts","../node_modules/aws-crt/lib/common/mqtt5_packet.ts","../node_modules/aws-crt/lib/common/mqtt_shared.ts","../node_modules/aws-crt/lib/common/platform.ts","../node_modules/aws-crt/lib/common/promise.ts","../node_modules/aws-crt/lib/common/resource_safety.ts","../node_modules/aws-crt/lib/common/utils.ts","../node_modules/aws-crt/node_modules/buffer/index.js","../node_modules/aws-iot-device-sdk-v2/lib/browser.ts","../node_modules/aws-iot-device-sdk-v2/lib/greengrass/discoveryclient.ts","../node_modules/aws-iot-device-sdk-v2/lib/greengrass/model.ts","../node_modules/aws-iot-device-sdk-v2/lib/iotidentity/iotidentityclient.ts","../node_modules/aws-iot-device-sdk-v2/lib/iotjobs/iotjobsclient.ts","../node_modules/aws-iot-device-sdk-v2/lib/iotjobs/model.ts","../node_modules/aws-iot-device-sdk-v2/lib/iotshadow/iotshadowclient.ts","../node_modules/aws-iot-device-sdk-v2/lib/service_client_mqtt_adapter.ts","../node_modules/base64-js/index.js","../node_modules/bl/BufferList.js","../node_modules/bl/bl.js","../node_modules/bl/node_modules/buffer/index.js","../node_modules/buffer/index.js","../node_modules/buffer/node_modules/isarray/index.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/core-util-is/lib/util.js","../node_modules/crypto-js/aes.js","../node_modules/crypto-js/blowfish.js","../node_modules/crypto-js/cipher-core.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-base64url.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/crypto-js/evpkdf.js","../node_modules/crypto-js/format-hex.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/index.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/crypto-js/pbkdf2.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/crypto-js/rabbit.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/ripemd160.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/sha3.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/sha512.js","../node_modules/crypto-js/tripledes.js","../node_modules/crypto-js/x64-core.js","../node_modules/debug/node_modules/ms/index.js","../node_modules/debug/src/browser.js","../node_modules/debug/src/common.js","../node_modules/define-data-property/index.js","../node_modules/duplexify/index.js","../node_modules/duplexify/node_modules/isarray/index.js","../node_modules/duplexify/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/duplexify/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/duplexify/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/duplexify/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/duplexify/node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/duplexify/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/duplexify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/duplexify/node_modules/readable-stream/readable-browser.js","../node_modules/duplexify/node_modules/safe-buffer/index.js","../node_modules/duplexify/node_modules/string_decoder/lib/string_decoder.js","../node_modules/end-of-stream/index.js","../node_modules/es-define-property/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/index.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/syntax.js","../node_modules/es-errors/type.js","../node_modules/es-errors/uri.js","../node_modules/events/events.js","../node_modules/for-each/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/gopd/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-proto/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/hasown/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/is-arguments/index.js","../node_modules/is-callable/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-typed-array/index.js","../node_modules/isomorphic-ws/browser.js","../node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/container/TreeContainer/Base/TreeNode.js","../node_modules/js-sdsl/dist/esm/container/src/container/TreeContainer/Base/TreeNode.ts","../node_modules/js-sdsl/dist/esm/container/ContainerBase/container/ContainerBase/index.js","../node_modules/js-sdsl/dist/esm/src/container/ContainerBase/index.ts","../node_modules/js-sdsl/dist/src/utils/throwError.ts","../node_modules/js-sdsl/dist/esm/utils/utils/throwError.js","../node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/container/TreeContainer/Base/index.js","../node_modules/js-sdsl/dist/esm/container/src/container/TreeContainer/Base/index.ts","../node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/container/TreeContainer/Base/TreeIterator.js","../node_modules/js-sdsl/dist/esm/container/src/container/TreeContainer/Base/TreeIterator.ts","../node_modules/js-sdsl/dist/esm/container/TreeContainer/container/TreeContainer/OrderedSet.js","../node_modules/js-sdsl/dist/esm/src/container/TreeContainer/OrderedSet.ts","../node_modules/lru-cache/index.js","../node_modules/mqtt-packet/constants.js","../node_modules/mqtt-packet/generate.js","../node_modules/mqtt-packet/mqtt.js","../node_modules/mqtt-packet/numbers.js","../node_modules/mqtt-packet/packet.js","../node_modules/mqtt-packet/parser.js","../node_modules/mqtt-packet/writeToStream.js","../node_modules/mqtt/lib/client.js","../node_modules/mqtt/lib/connect/ali.js","../node_modules/mqtt/lib/connect/index.js","../node_modules/mqtt/lib/connect/tcp.js","../node_modules/mqtt/lib/connect/tls.js","../node_modules/mqtt/lib/connect/ws.js","../node_modules/mqtt/lib/connect/wx.js","../node_modules/mqtt/lib/default-message-id-provider.js","../node_modules/mqtt/lib/store.js","../node_modules/mqtt/lib/topic-alias-recv.js","../node_modules/mqtt/lib/topic-alias-send.js","../node_modules/mqtt/lib/validations.js","../node_modules/mqtt/node_modules/duplexify/index.js","../node_modules/mqtt/node_modules/ws/browser.js","../node_modules/number-allocator/index.js","../node_modules/number-allocator/lib/number-allocator.js","../node_modules/object-inspect/index.js","../node_modules/once/once.js","../node_modules/possible-typed-array-names/index.js","../node_modules/process-nextick-args/index.js","../node_modules/process/browser.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/readable-browser.js","../node_modules/reinterval/index.js","../node_modules/rfdc/default.js","../node_modules/rfdc/index.js","../node_modules/safe-buffer/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/set-function-length/index.js","../node_modules/side-channel/index.js","../node_modules/stream-shift/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/node_modules/qs/lib/formats.js","../node_modules/url/node_modules/qs/lib/index.js","../node_modules/url/node_modules/qs/lib/parse.js","../node_modules/url/node_modules/qs/lib/stringify.js","../node_modules/url/node_modules/qs/lib/utils.js","../node_modules/url/url.js","../node_modules/util-deprecate/browser.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/util/support/types.js","../node_modules/util/util.js","../node_modules/which-typed-array/index.js","../node_modules/wrappy/wrappy.js","../node_modules/xtend/immutable.js","../node_modules/yallist/iterator.js","../node_modules/yallist/yallist.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/available-typed-arrays/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/clsx/dist/clsx.mjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/Button/buttonClasses.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","../node_modules/@mui/material/Button/Button.js","../node_modules/react-use-event-hook/src/useEvent.ts","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/array.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/selectChild.js","../node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/iterator.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-brush/src/brush.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/number.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-zoom/src/transform.js","utils/judgeDevice.js","components/Heatmap.js","components/containerUtils.js","../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/resolveLogins.js","../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentity.js","../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/IndexedDbStorage.js","../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/localStorage.js","../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/InMemoryStorage.js","../node_modules/@aws-sdk/credential-provider-cognito-identity/dist-es/fromCognitoIdentityPool.js","../node_modules/@aws-sdk/credential-providers/dist-es/fromCognitoIdentityPool.js","utils/settings.js","utils/connect_aws.js","utils/thermoUtils.js","demos/ThermoSensorDemo.js","App.js","index.js"],"sourcesContent":["import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\nexport const fromUtf8 = (input) => typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\nexport const toUtf8 = (input) => typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n","export function fromUtf8(input) {\n return new TextEncoder().encode(input);\n}\nexport function toUtf8(input) {\n return new TextDecoder(\"utf-8\").decode(input);\n}\n","export const fromUtf8 = (input) => {\n const bytes = [];\n for (let i = 0, len = input.length; i < len; i++) {\n const value = input.charCodeAt(i);\n if (value < 0x80) {\n bytes.push(value);\n }\n else if (value < 0x800) {\n bytes.push((value >> 6) | 0b11000000, (value & 0b111111) | 0b10000000);\n }\n else if (i + 1 < input.length && (value & 0xfc00) === 0xd800 && (input.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n const surrogatePair = 0x10000 + ((value & 0b1111111111) << 10) + (input.charCodeAt(++i) & 0b1111111111);\n bytes.push((surrogatePair >> 18) | 0b11110000, ((surrogatePair >> 12) & 0b111111) | 0b10000000, ((surrogatePair >> 6) & 0b111111) | 0b10000000, (surrogatePair & 0b111111) | 0b10000000);\n }\n else {\n bytes.push((value >> 12) | 0b11100000, ((value >> 6) & 0b111111) | 0b10000000, (value & 0b111111) | 0b10000000);\n }\n }\n return Uint8Array.from(bytes);\n};\nexport const toUtf8 = (input) => {\n let decoded = \"\";\n for (let i = 0, len = input.length; i < len; i++) {\n const byte = input[i];\n if (byte < 0x80) {\n decoded += String.fromCharCode(byte);\n }\n else if (0b11000000 <= byte && byte < 0b11100000) {\n const nextByte = input[++i];\n decoded += String.fromCharCode(((byte & 0b11111) << 6) | (nextByte & 0b111111));\n }\n else if (0b11110000 <= byte && byte < 0b101101101) {\n const surrogatePair = [byte, input[++i], input[++i], input[++i]];\n const encoded = \"%\" + surrogatePair.map((byteValue) => byteValue.toString(16)).join(\"%\");\n decoded += decodeURIComponent(encoded);\n }\n else {\n decoded += String.fromCharCode(((byte & 0b1111) << 12) | ((input[++i] & 0b111111) << 6) | (input[++i] & 0b111111));\n }\n }\n return decoded;\n};\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwn = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-43c6fea0.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-43c6fea0.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.4\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.3\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.2\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n // $FlowFixMe\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser$1) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","module.exports = require('events').EventEmitter;\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\n\nvar Transform = require('readable-stream').Transform\nvar duplexify = require('duplexify')\nvar WS = require('isomorphic-ws')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = WebSocketStream\n\nfunction buildProxy (options, socketWrite, socketEnd) {\n var proxy = new Transform({\n objectMode: options.objectMode\n })\n\n proxy._write = socketWrite\n proxy._flush = socketEnd\n\n return proxy\n}\n\nfunction WebSocketStream(target, protocols, options) {\n var stream, socket\n\n var isBrowser = process.title === 'browser'\n var isNative = !!global.WebSocket\n var socketWrite = isBrowser ? socketWriteBrowser : socketWriteNode\n\n if (protocols && !Array.isArray(protocols) && 'object' === typeof protocols) {\n // accept the \"options\" Object as the 2nd argument\n options = protocols\n protocols = undefined\n\n if (typeof options.protocol === 'string' || Array.isArray(options.protocol)) {\n protocols = options.protocol;\n }\n }\n\n if (!options) options = {}\n\n if (options.objectMode === undefined) {\n options.objectMode = !(options.binary === true || options.binary === undefined)\n }\n\n var proxy = buildProxy(options, socketWrite, socketEnd)\n\n if (!options.objectMode) {\n proxy._writev = writev\n }\n\n // browser only: sets the maximum socket buffer size before throttling\n var bufferSize = options.browserBufferSize || 1024 * 512\n\n // browser only: how long to wait when throttling\n var bufferTimeout = options.browserBufferTimeout || 1000\n\n // use existing WebSocket object that was passed in\n if (typeof target === 'object') {\n socket = target\n // otherwise make a new one\n } else {\n // special constructor treatment for native websockets in browsers, see\n // https://github.com/maxogden/websocket-stream/issues/82\n if (isNative && isBrowser) {\n socket = new WS(target, protocols)\n } else {\n socket = new WS(target, protocols, options)\n }\n\n socket.binaryType = 'arraybuffer'\n }\n\n // according to https://github.com/baygeldin/ws-streamify/issues/1\n // Nodejs WebSocketServer cause memory leak\n // Handlers like onerror, onclose, onmessage and onopen are accessible via setter/getter\n // And setter first of all fires removeAllListeners, that doesnt make inner array of clients on WebSocketServer cleared ever\n var eventListenerSupport = ('undefined' === typeof socket.addEventListener)\n\n // was already open when passed in\n if (socket.readyState === socket.OPEN) {\n stream = proxy\n } else {\n stream = duplexify(undefined, undefined, options)\n if (!options.objectMode) {\n stream._writev = writev\n }\n\n if (eventListenerSupport) {\n socket.addEventListener('open', onopen)\n } else {\n socket.onopen = onopen\n }\n }\n\n stream.socket = socket\n\n if (eventListenerSupport) {\n socket.addEventListener('close', onclose)\n socket.addEventListener('error', onerror)\n socket.addEventListener('message', onmessage)\n } else {\n socket.onclose = onclose\n socket.onerror = onerror\n socket.onmessage = onmessage\n }\n\n proxy.on('close', destroy)\n\n var coerceToBuffer = !options.objectMode\n\n function socketWriteNode(chunk, enc, next) {\n // avoid errors, this never happens unless\n // destroy() is called\n if (socket.readyState !== socket.OPEN) {\n next()\n return\n }\n\n if (coerceToBuffer && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, 'utf8')\n }\n socket.send(chunk, next)\n }\n\n function socketWriteBrowser(chunk, enc, next) {\n if (socket.bufferedAmount > bufferSize) {\n setTimeout(socketWriteBrowser, bufferTimeout, chunk, enc, next)\n return\n }\n\n if (coerceToBuffer && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, 'utf8')\n }\n\n try {\n socket.send(chunk)\n } catch(err) {\n return next(err)\n }\n\n next()\n }\n\n function socketEnd(done) {\n socket.close()\n done()\n }\n\n function onopen() {\n stream.setReadable(proxy)\n stream.setWritable(proxy)\n stream.emit('connect')\n }\n\n function onclose(closeDetails) {\n stream.emit('ws-close', closeDetails);\n stream.end()\n stream.destroy()\n }\n\n function onerror(err) {\n stream.destroy(err)\n }\n\n function onmessage(event) {\n var data = event.data\n if (data instanceof ArrayBuffer) data = Buffer.from(data)\n else data = Buffer.from(data, 'utf8')\n proxy.push(data)\n }\n\n function destroy() {\n socket.close()\n }\n\n // this is to be enabled only if objectMode is false\n function writev (chunks, cb) {\n var buffers = new Array(chunks.length)\n for (var i = 0; i < chunks.length; i++) {\n if (typeof chunks[i].chunk === 'string') {\n buffers[i] = Buffer.from(chunks[i], 'utf8')\n } else {\n buffers[i] = chunks[i].chunk\n }\n }\n\n this._write(Buffer.concat(buffers), 'binary', cb)\n }\n\n return stream\n}\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)([/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m12 12.9-2.13 2.09c-.56.56-.87 1.29-.87 2.07C9 18.68 10.35 20 12 20s3-1.32 3-2.94c0-.78-.31-1.52-.87-2.07z\"\n}, \"0\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m16 6-.44.55C14.38 8.02 12 7.19 12 5.3V2S4 6 4 13c0 2.92 1.56 5.47 3.89 6.86-.56-.79-.89-1.76-.89-2.8 0-1.32.52-2.56 1.47-3.5L12 10.1l3.53 3.47c.95.93 1.47 2.17 1.47 3.5 0 1.02-.31 1.96-.85 2.75 1.89-1.15 3.29-3.06 3.71-5.3.66-3.55-1.07-6.9-3.86-8.52\"\n}, \"1\")], 'LocalFireDepartment');","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","import slotShouldForwardProp from './slotShouldForwardProp';\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nimport rootShouldForwardProp from './rootShouldForwardProp';\nexport { default as slotShouldForwardProp } from './slotShouldForwardProp';\nexport { default as rootShouldForwardProp } from './rootShouldForwardProp';\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport systemUseThemeProps from '@mui/system/useThemeProps';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","import createChainedFunction from '@mui/utils/createChainedFunction';\nexport default createChainedFunction;","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n return {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n // the will define the property that has `currentColor`\n // for example heroicons uses fill=\"none\" and stroke=\"currentColor\"\n fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n flexShrink: 0,\n transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n }),\n fontSize: {\n inherit: 'inherit',\n small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n }[ownerState.fontSize],\n // TODO v5 deprecate, v6 remove for sx\n color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n inherit: undefined\n }[ownerState.color]\n };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n const ownerState = _extends({}, props, {\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox,\n hasSvgAsChild\n });\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, more, other, hasSvgAsChild && children.props, {\n ownerState: ownerState,\n children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","import debounce from '@mui/utils/debounce';\nexport default debounce;","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","import deprecatedPropType from '@mui/utils/deprecatedPropType';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import isMuiElement from '@mui/utils/isMuiElement';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '@mui/utils/ownerDocument';\nexport default ownerDocument;","import ownerWindow from '@mui/utils/ownerWindow';\nexport default ownerWindow;","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import requirePropFactory from '@mui/utils/requirePropFactory';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import setRef from '@mui/utils/setRef';\nexport default setRef;","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","'use client';\n\nimport useId from '@mui/utils/useId';\nexport default useId;","import unsupportedProp from '@mui/utils/unsupportedProp';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport useControlled from '@mui/utils/useControlled';\nexport default useControlled;","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nexport default useForkRef;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","'use client';\n\nimport useIsFocusVisible from '@mui/utils/useIsFocusVisible';\nexport default useIsFocusVisible;","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n if (process.env.NODE_ENV !== 'production') {\n if (tag === undefined) {\n throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n }\n }\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[i], args[0][i]);\n }\n } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if ( // $FlowFixMe\n finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n newProps.ref = ref;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n return 'NO_COMPONENT_SELECTOR';\n } // $FlowFixMe: coerce undefined to string\n\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n// prepend: true moves MUI styles to the top of the so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nlet cache;\nif (typeof document === 'object') {\n cache = createCache({\n key: 'css',\n prepend: true\n });\n}\nexport default function StyledEngineProvider(props) {\n const {\n injectFirst,\n children\n } = props;\n return injectFirst && cache ? /*#__PURE__*/_jsx(CacheProvider, {\n value: cache,\n children: children\n }) : children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * By default, the styles are injected last in the element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override MUI's styles, set this prop.\n */\n injectFirst: PropTypes.bool\n} : void 0;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n const {\n styles,\n defaultTheme = {}\n } = props;\n const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/_jsx(Global, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n defaultTheme: PropTypes.object,\n styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","/**\n * @mui/styled-engine v5.15.14\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.alpha = alpha;\nexports.blend = blend;\nexports.colorChannel = void 0;\nexports.darken = darken;\nexports.decomposeColor = decomposeColor;\nexports.emphasize = emphasize;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.hexToRgb = hexToRgb;\nexports.hslToRgb = hslToRgb;\nexports.lighten = lighten;\nexports.private_safeAlpha = private_safeAlpha;\nexports.private_safeColorChannel = void 0;\nexports.private_safeDarken = private_safeDarken;\nexports.private_safeEmphasize = private_safeEmphasize;\nexports.private_safeLighten = private_safeLighten;\nexports.recomposeColor = recomposeColor;\nexports.rgbToHex = rgbToHex;\nvar _formatMuiErrorMessage2 = _interopRequireDefault(require(\"@mui/utils/formatMuiErrorMessage\"));\nvar _clamp = _interopRequireDefault(require(\"@mui/utils/clamp\"));\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return (0, _clamp.default)(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nfunction hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nfunction decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : (0, _formatMuiErrorMessage2.default)(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : (0, _formatMuiErrorMessage2.default)(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nconst colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexports.colorChannel = colorChannel;\nconst private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexports.private_safeColorChannel = private_safeColorChannel;\nfunction recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nfunction hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nfunction getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nfunction private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nfunction private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nfunction blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createStyled;\nexports.shouldForwardProp = shouldForwardProp;\nexports.systemDefaultTheme = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\nvar _styledEngine = _interopRequireWildcard(require(\"@mui/styled-engine\"));\nvar _deepmerge = require(\"@mui/utils/deepmerge\");\nvar _capitalize = _interopRequireDefault(require(\"@mui/utils/capitalize\"));\nvar _getDisplayName = _interopRequireDefault(require(\"@mui/utils/getDisplayName\"));\nvar _createTheme = _interopRequireDefault(require(\"./createTheme\"));\nvar _styleFunctionSx = _interopRequireDefault(require(\"./styleFunctionSx\"));\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nfunction shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nconst systemDefaultTheme = exports.systemDefaultTheme = (0, _createTheme.default)();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle((0, _extends2.default)({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, (0, _extends2.default)({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = (0, _objectWithoutPropertiesLoose2.default)(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props((0, _extends2.default)({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style((0, _extends2.default)({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nfunction createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return (0, _styleFunctionSx.default)((0, _extends2.default)({}, props, {\n theme: resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n (0, _styledEngine.internal_processStyles)(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = (0, _objectWithoutPropertiesLoose2.default)(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = (0, _styledEngine.default)(tag, (0, _extends2.default)({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || (0, _deepmerge.isPlainObject)(stylesArg)) {\n return props => processStyleArg(stylesArg, (0, _extends2.default)({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${(0, _capitalize.default)(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${(0, _getDisplayName.default)(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n var _props$theme$unstable, _props$theme;\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = (_props$theme$unstable = props == null || (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return _extends({}, systemProps, result);\n };\n } else {\n finalSx = _extends({}, systemProps, inSx);\n }\n return _extends({}, otherProps, {\n sx: finalSx\n });\n}","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n const match = `${fn}`.match(fnNameMatchRegex);\n const name = match && match[1];\n return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","export class ProviderError extends Error {\n constructor(message, tryNextLink = true) {\n super(message);\n this.tryNextLink = tryNextLink;\n this.name = \"ProviderError\";\n Object.setPrototypeOf(this, ProviderError.prototype);\n }\n static from(error, tryNextLink = true) {\n return Object.assign(new this(error.message, tryNextLink), error);\n }\n}\n","import { ProviderError } from \"./ProviderError\";\nexport class CredentialsProviderError extends ProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"CredentialsProviderError\";\n Object.setPrototypeOf(this, CredentialsProviderError.prototype);\n }\n}\n","import { ProviderError } from \"./ProviderError\";\nexport const chain = (...providers) => async () => {\n if (providers.length === 0) {\n throw new ProviderError(\"No providers in chain\");\n }\n let lastProviderError;\n for (const provider of providers) {\n try {\n const credentials = await provider();\n return credentials;\n }\n catch (err) {\n lastProviderError = err;\n if (err?.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n};\n","export const memoize = (provider, isExpired, requiresRefresh) => {\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = async () => {\n if (!pending) {\n pending = provider();\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n }\n finally {\n pending = undefined;\n }\n return resolved;\n };\n if (isExpired === undefined) {\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider();\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider();\n }\n if (isConstant) {\n return resolved;\n }\n if (requiresRefresh && !requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider();\n return resolved;\n }\n return resolved;\n };\n};\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n// This is the entry point for the browser AWS CRT shim library\n\nimport './browser/polyfills';\n\n/* common libs */\nimport * as cancel from './common/cancel';\nimport * as platform from './common/platform';\nimport * as promise from './common/promise';\nimport * as resource_safety from './common/resource_safety';\n\n/* browser specific libs */\nimport * as io from './browser/io';\nimport * as mqtt from './browser/mqtt';\nimport * as mqtt5 from './browser/mqtt5';\nimport * as http from './browser/http';\nimport * as crypto from './browser/crypto';\nimport * as iot from './browser/iot';\nimport * as auth from './browser/auth';\nimport { ICrtError, CrtError } from './browser/error';\n\nexport {\n auth,\n cancel,\n crypto,\n http,\n io,\n iot,\n mqtt,\n mqtt5,\n platform,\n promise,\n resource_safety,\n ICrtError,\n CrtError\n};\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * Module for AWS Authentication logic - signing http requests, events, chunks, etc...\n *\n * @packageDocumentation\n * @module auth\n * @mergeTarget\n */\n\nimport { AwsSigningConfigBase } from '../common/auth';\n\nexport { AwsSigningConfigBase } from '../common/auth';\n \n/**\n * Standard AWS Credentials\n *\n * @category Auth\n */\nexport interface AWSCredentials{\n /** Optional region */\n aws_region?: string,\n /** AWS access id */\n aws_access_id: string,\n /** AWS secret access key */\n aws_secret_key: string,\n /** Session token for session credentials */\n aws_sts_token?: string,\n}\n\n/**\n * CredentialsProvider Base Class. The base class of credentials providers.\n *\n * @category Auth\n */\nexport class CredentialsProvider {\n /**\n * Return a valid credentials. Please note mqtt.js does not support promises, meaning that credentials\n * provider implementation should handle application-level authentication refreshing so that the websocket \n * connection could simply grab the latest valid tokens when getCredentials() get called. \n * \n * @Returns AWSCredentials\n * \n * */\n getCredentials() : AWSCredentials | undefined\n { \n return undefined;\n }\n\n /**\n * Invoked by browser MQTT clients before a connection is attempted. Sub-classes that source credentials\n * asynchronously should override this API to perform asynchronous credentials resolution.\n *\n * Asynchronous providers that cache session-based credentials should resolve the returned promise if\n * the cached credentials are still valid.\n *\n * @returns a promise that resolves if credentials were successfully refreshed, rejected otherwise.\n */\n async refreshCredentials() : Promise {\n return new Promise((resolve, reject) => {\n resolve();\n });\n }\n}\n\n\n/**\n * StaticCredentialProvider. The provider will always return the static AWSCredential.\n *\n * @category Auth\n */\nexport class StaticCredentialProvider extends CredentialsProvider{\n credentials : AWSCredentials;\n constructor(credentials: AWSCredentials)\n {\n super();\n this.credentials = credentials;\n }\n\n getCredentials = () : AWSCredentials | undefined =>\n {\n return this.credentials;\n }\n}\n\n/**\n * Configuration for use in browser credentials\n *\n * @category Auth\n */\nexport interface AwsSigningConfig extends AwsSigningConfigBase{\n credentials: AWSCredentials;\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * Module for AWS IoT configuration and connection establishment\n *\n * @packageDocumentation\n */\n\nimport { CredentialsProvider, StaticCredentialProvider} from \"./auth\"\nimport { SocketOptions } from \"./io\";\nimport { MqttClientConnection, MqttConnectionConfig, MqttWill } from \"./mqtt\";\nimport * as platform from \"../common/platform\";\nimport * as iot_shared from \"../common/aws_iot_shared\"\n\n/**\n * Builder functions to create a {@link MqttConnectionConfig} which can then be used to create\n * a {@link MqttClientConnection}, configured for use with AWS IoT.\n *\n * @category IoT\n */\nexport class AwsIotMqttConnectionConfigBuilder {\n private params: MqttConnectionConfig\n\n private constructor() {\n this.params = {\n client_id: '',\n host_name: '',\n socket_options: new SocketOptions(),\n port: 443,\n clean_session: false,\n keep_alive: undefined,\n will: undefined,\n username: '',\n password: undefined,\n websocket: {},\n credentials_provider: undefined\n };\n }\n\n /**\n * For API compatibility with the native version. Does not set up mTLS.\n *\n * @returns a new websocket connection builder object with default TLS configuration\n */\n static new_mtls_builder(...args: any[]) {\n return AwsIotMqttConnectionConfigBuilder.new_builder_for_websocket();\n }\n\n /**\n * For API compatibility with the native version. Alias for {@link new_builder_for_websocket}.\n *\n * @returns a new websocket connection builder object with default TLS configuration\n */\n static new_default_builder() {\n return AwsIotMqttConnectionConfigBuilder.new_builder_for_websocket();\n }\n\n /**\n * For API compatibility with the native version. Alias for {@link new_with_websockets}.\n *\n * @returns a new websocket connection builder object with default TLS configuration\n */\n static new_websocket_builder(...args: any[]) {\n return this.new_with_websockets(...args);\n }\n\n /**\n * For API compatibility with the native version. Alias for {@link new_builder_for_websocket}.\n *\n * @returns a new websocket connection builder object with default TLS configuration\n */\n static new_with_websockets(...args: any[]) {\n return AwsIotMqttConnectionConfigBuilder.new_builder_for_websocket();\n }\n\n\n /**\n * Creates a new builder using MQTT over websockets (the only option in browser)\n *\n * @returns a new websocket connection builder object with default TLS configuration\n */\n static new_builder_for_websocket() {\n let builder = new AwsIotMqttConnectionConfigBuilder();\n return builder;\n }\n\n /**\n * Configures the IoT endpoint for this connection\n * @param endpoint The IoT endpoint to connect to\n *\n * @returns this builder object\n */\n with_endpoint(endpoint: string) {\n this.params.host_name = endpoint;\n return this;\n }\n\n /**\n * The client id to use for this connection\n * @param client_id The client id to use for this connection\n *\n * @returns this builder object\n */\n with_client_id(client_id: string) {\n this.params.client_id = client_id;\n return this;\n }\n\n /**\n * The port to connect to on the IoT endpoint\n * @param port The port to connect to on the IoT endpoint. Usually 8883 for MQTT, or 443 for websockets\n *\n * @returns this builder object\n */\n with_port(port: number) {\n this.params.port = port;\n return this;\n }\n\n /**\n * Determines whether or not the service should try to resume prior subscriptions, if it has any\n * @param clean_session true if the session should drop prior subscriptions when this client connects, false to resume the session\n *\n * @returns this builder object\n */\n with_clean_session(clean_session: boolean) {\n this.params.clean_session = clean_session;\n return this;\n }\n\n /**\n * Configures the connection to use MQTT over websockets. No-op in the browser.\n *\n * @returns this builder object\n */\n with_use_websockets() {\n /* no-op, but valid in the browser */\n return this;\n }\n\n /**\n * Configures MQTT keep-alive via PING messages. Note that this is not TCP keepalive.\n * @param keep_alive How often in seconds to send an MQTT PING message to the service to keep the connection alive\n *\n * @returns this builder object\n */\n with_keep_alive_seconds(keep_alive: number) {\n this.params.keep_alive = keep_alive;\n return this;\n }\n\n /**\n * Configures the TCP socket timeout (in milliseconds)\n * @param timeout_ms TCP socket timeout\n * @deprecated in favor of socket options\n *\n * @returns this builder object\n */\n with_timeout_ms(timeout_ms: number) {\n this.with_ping_timeout_ms(timeout_ms);\n return this;\n }\n\n /**\n * Configures the PINGREQ response timeout (in milliseconds)\n * @param ping_timeout PINGREQ response timeout\n *\n * @returns this builder object\n */\n with_ping_timeout_ms(ping_timeout: number) {\n this.params.ping_timeout = ping_timeout;\n return this;\n }\n\n /**\n * Configures the will message to be sent when this client disconnects\n * @param will The will topic, qos, and message\n *\n * @returns this builder object\n */\n with_will(will: MqttWill) {\n this.params.will = will;\n return this;\n }\n\n /**\n * Configures the common settings for the socket to use when opening a connection to the server\n * @param socket_options The socket settings\n *\n * @returns this builder object\n */\n with_socket_options(socket_options: SocketOptions) {\n this.params.socket_options = socket_options;\n return this;\n }\n\n /**\n * Allows additional headers to be sent when establishing a websocket connection. Useful for custom authentication.\n * @param headers Additional headers to send during websocket connect\n *\n * @returns this builder object\n */\n with_websocket_headers(headers: { [index: string]: string }) {\n this.params.websocket = {\n headers: headers\n };\n return this;\n }\n\n /**\n * Configures Static AWS credentials for this connection.\n * Please note that the static credential will fail when the web session expired.\n * @param aws_region The service region to connect to\n * @param aws_access_id IAM Access ID\n * @param aws_secret_key IAM Secret Key\n * @param aws_sts_token session credentials token (optional)\n *\n * @returns this builder object\n */\n with_credentials(aws_region: string, aws_access_id: string, aws_secret_key: string, aws_sts_token?: string) {\n const provider = new StaticCredentialProvider(\n { aws_region: aws_region,\n aws_access_id: aws_access_id,\n aws_secret_key: aws_secret_key,\n aws_sts_token: aws_sts_token});\n this.params.credentials_provider = provider;\n return this;\n }\n\n /**\n * Configures credentials provider (currently support for AWS Cognito Credential Provider) for this connection\n * @param customer_provider credential provider used to update credential when session expired (optional)\n *\n * @returns this builder object\n */\n with_credential_provider( customer_provider : CredentialsProvider) {\n this.params.credentials_provider = customer_provider;\n return this;\n }\n\n /**\n * Sets the custom authorizer settings. This function will modify the username, port, and TLS options.\n *\n * @param username The username to use with the custom authorizer. If an empty string is passed, it will\n * check to see if a username has already been set (via WithUsername function). If no\n * username is set then no username will be passed with the MQTT connection.\n * @param authorizer_name The name of the custom authorizer. If an empty string is passed, then\n * 'x-amz-customauthorizer-name' will not be added with the MQTT connection. It is strongly\n * recommended to URL-encode this value; the SDK will not do so for you.\n * @param authorizer_signature The signature of the custom authorizer. If an empty string is passed, then\n * 'x-amz-customauthorizer-signature' will not be added with the MQTT connection.\n * The signature must be based on the private key associated with the custom authorizer.\n * The signature must be base64 encoded.\n * Required if the custom authorizer has signing enabled.\n * @param password The password to use with the custom authorizer. If null is passed, then no password will\n * be set.\n * @param token_key_name Key used to extract the custom authorizer token from MQTT username query-string properties.\n * Required if the custom authorizer has signing enabled. It is strongly suggested to URL-encode\n * this value; the SDK will not do so for you.\n * @param token_value An opaque token value.\n * Required if the custom authorizer has signing enabled. This value must be signed by the private\n * key associated with the custom authorizer and the result placed in the authorizer_signature argument.\n */\n with_custom_authorizer(username : string, authorizer_name : string, authorizer_signature : string, password : string, token_key_name? : string, token_value? : string) {\n let uri_encoded_signature = iot_shared.canonicalizeCustomAuthTokenSignature(authorizer_signature);\n let username_string = iot_shared.populate_username_string_with_custom_authorizer(\n \"\", username, authorizer_name, uri_encoded_signature, this.params.username, token_key_name, token_value);\n this.params.username = username_string;\n this.params.password = password;\n // Tells the websocket connection we are using a custom authorizer\n if (this.params.websocket) {\n this.params.websocket.protocol = \"wss-custom-auth\";\n }\n return this;\n }\n\n /**\n * Sets username for the connection\n *\n * @param username the username that will be passed with the MQTT connection\n */\n with_username(username : string) {\n this.params.username = username;\n return this;\n }\n\n /**\n * Sets password for the connection\n *\n * @param password the password that will be passed with the MQTT connection\n */\n with_password(password : string) {\n this.params.password = password;\n return this;\n }\n\n /**\n * Configure the max reconnection period (in second). The reconnection period will\n * be set in range of [reconnect_min_sec,reconnect_max_sec].\n * @param reconnect_max_sec max reconnection period\n */\n with_reconnect_max_sec(max_sec: number) {\n this.params.reconnect_max_sec = max_sec;\n return this;\n }\n\n /**\n * Configure the min reconnection period (in second). The reconnection period will\n * be set in range of [reconnect_min_sec,reconnect_max_sec].\n * @param reconnect_min_sec min reconnection period\n */\n with_reconnect_min_sec(min_sec: number) {\n this.params.reconnect_min_sec = min_sec;\n return this;\n }\n\n /**\n * Returns the configured MqttConnectionConfig\n * @returns The configured MqttConnectionConfig\n */\n build() {\n if (this.params.client_id === undefined || this.params.host_name === undefined) {\n throw 'client_id and endpoint are required';\n }\n\n // Add the metrics string\n if (this.params.username == undefined || this.params.username == null || this.params.username == \"\") {\n this.params.username = \"?SDK=NodeJSv2&Version=\"\n } else {\n if (this.params.username.indexOf(\"?\") != -1) {\n this.params.username += \"&SDK=NodeJSv2&Version=\"\n } else {\n this.params.username += \"?SDK=NodeJSv2&Version=\"\n }\n }\n this.params.username += platform.crt_version()\n\n return this.params;\n }\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * Module for the configuration of MQTT5 clients to connect to AWS IoT\n *\n * @packageDocumentation\n */\n\nimport * as mqtt5 from \"./mqtt5\";\nimport * as mqtt5_packet from \"../common/mqtt5_packet\";\nimport * as auth from \"./auth\";\nimport * as iot_shared from \"../common/aws_iot_shared\";\nimport { CrtError } from \"./error\";\n\nexport { MqttConnectCustomAuthConfig } from '../common/aws_iot_shared';\n\n/**\n * Websocket-specific MQTT5 connection AWS IoT configuration options\n *\n * @category IoT\n */\nexport interface WebsocketSigv4Config {\n\n /**\n * Sources the AWS Credentials used to sign the websocket connection handshake. If not provided, the\n * default credentials provider chain is used.\n */\n credentialsProvider: auth.CredentialsProvider;\n\n /**\n * AWS region the websocket connection is being established in. Must match the region embedded in the\n * endpoint. If not provided, pattern-matching logic is used to extract the region from the endpoint.\n * Use this option if the pattern-matching logic has not yet been updated to handle new endpoint formats.\n */\n region?: string;\n}\n\n/**\n * Builder pattern class to create an {@link mqtt5.Mqtt5ClientConfig} which can then be used to create\n * an {@link mqtt5.Mqtt5Client}, configured for use with AWS IoT.\n *\n * [MQTT5 Client User Guide](https://www.github.com/awslabs/aws-crt-nodejs/blob/main/MQTT5-UserGuide.md)\n *\n * @category IoT\n */\nexport class AwsIotMqtt5ClientConfigBuilder {\n\n private static DEFAULT_WEBSOCKET_MQTT_PORT : number = 443;\n private static DEFAULT_KEEP_ALIVE : 1200;\n\n private config: mqtt5.Mqtt5ClientConfig;\n private customAuthConfig?: iot_shared.MqttConnectCustomAuthConfig;\n\n private constructor(hostName : string, port: number, websocketConfig: mqtt5.Mqtt5WebsocketConfig) {\n this.config = {\n hostName: hostName,\n port: port,\n connectProperties: {\n keepAliveIntervalSeconds: AwsIotMqtt5ClientConfigBuilder.DEFAULT_KEEP_ALIVE\n },\n websocketOptions: websocketConfig\n };\n }\n\n /* Builders for difference connection methods to AWS IoT Core */\n\n /**\n * Create a new MQTT5 client builder that will create MQTT5 clients that connect to AWS IoT Core via websockets,\n * using AWS Sigv4 signing to establish authenticate.\n *\n * @param hostName - AWS IoT endpoint to connect to\n * @param sigv4Config - additional sigv4-oriented options to use\n */\n static newWebsocketMqttBuilderWithSigv4Auth(hostName : string, sigv4Config: WebsocketSigv4Config) : AwsIotMqtt5ClientConfigBuilder {\n\n if (sigv4Config == null || sigv4Config == undefined) {\n throw new CrtError(\"AwsIotMqtt5ClientConfigBuilder newWebsocketMqttBuilderWithSigv4Auth: sigv4Config not defined\");\n }\n\n let region : string = sigv4Config.region ?? iot_shared.extractRegionFromEndpoint(hostName);\n\n let websocketConfig: mqtt5.Mqtt5WebsocketConfig = {\n urlFactoryOptions: {\n urlFactory: mqtt5.Mqtt5WebsocketUrlFactoryType.Sigv4,\n region: region,\n credentialsProvider: sigv4Config.credentialsProvider\n }\n };\n\n let builder = new AwsIotMqtt5ClientConfigBuilder(\n hostName,\n AwsIotMqtt5ClientConfigBuilder.DEFAULT_WEBSOCKET_MQTT_PORT,\n websocketConfig);\n\n return builder;\n }\n\n /**\n * Create a new MQTT5 client builder that will create MQTT5 clients that connect to AWS IoT Core via websockets,\n * authenticating via a custom authenticator.\n *\n * @param hostName - AWS IoT endpoint to connect to\n * @param customAuthConfig - AWS IoT custom auth configuration\n */\n static newWebsocketMqttBuilderWithCustomAuth(hostName : string, customAuthConfig: iot_shared.MqttConnectCustomAuthConfig) : AwsIotMqtt5ClientConfigBuilder {\n\n let websocketConfig: mqtt5.Mqtt5WebsocketConfig = {\n urlFactoryOptions: {\n urlFactory: mqtt5.Mqtt5WebsocketUrlFactoryType.Wss\n }\n };\n\n let builder = new AwsIotMqtt5ClientConfigBuilder(\n hostName,\n AwsIotMqtt5ClientConfigBuilder.DEFAULT_WEBSOCKET_MQTT_PORT,\n websocketConfig);\n\n builder.customAuthConfig = iot_shared.canonicalizeCustomAuthConfig(customAuthConfig);\n\n return builder;\n }\n\n /* Instance Methods for various config overrides */\n\n /**\n * Overrides the port to connect to on the IoT endpoint\n *\n * @param port The port to connect to on the IoT endpoint. Usually 8883 for MQTT, or 443 for websockets\n */\n withPort(port: number) : AwsIotMqtt5ClientConfigBuilder {\n this.config.port = port;\n return this;\n }\n\n /**\n * Overrides all configurable options with respect to the CONNECT packet sent by the client, including the will.\n * These connect properties will be used for every connection attempt made by the client. Custom authentication\n * configuration will override the username and password values in this configuration.\n *\n * @param connectPacket all configurable options with respect to the CONNECT packet sent by the client\n */\n withConnectProperties(connectPacket: mqtt5_packet.ConnectPacket) : AwsIotMqtt5ClientConfigBuilder {\n this.config.connectProperties = connectPacket;\n return this;\n }\n\n /**\n * Overrides how the MQTT5 client should behave with respect to MQTT sessions.\n *\n * @param sessionBehavior how the MQTT5 client should behave with respect to MQTT sessions.\n */\n withSessionBehavior(sessionBehavior: mqtt5.ClientSessionBehavior) : AwsIotMqtt5ClientConfigBuilder {\n this.config.sessionBehavior = sessionBehavior;\n return this;\n }\n\n /**\n * Overrides how the reconnect delay is modified in order to smooth out the distribution of reconnection attempt\n * timepoints for a large set of reconnecting clients.\n *\n * @param retryJitterMode controls how the reconnect delay is modified in order to smooth out the distribution of\n * econnection attempt timepoints for a large set of reconnecting clients.\n */\n withRetryJitterMode(retryJitterMode: mqtt5.RetryJitterType) : AwsIotMqtt5ClientConfigBuilder {\n this.config.retryJitterMode = retryJitterMode;\n return this;\n }\n\n /**\n * Overrides the minimum amount of time to wait to reconnect after a disconnect. Exponential backoff is performed\n * with controllable jitter after each connection failure.\n *\n * @param minReconnectDelayMs minimum amount of time to wait to reconnect after a disconnect.\n */\n withMinReconnectDelayMs(minReconnectDelayMs : number) : AwsIotMqtt5ClientConfigBuilder {\n this.config.minReconnectDelayMs = minReconnectDelayMs;\n return this;\n }\n\n /**\n * Overrides the maximum amount of time to wait to reconnect after a disconnect. Exponential backoff is performed\n * with controllable jitter after each connection failure.\n *\n * @param maxReconnectDelayMs maximum amount of time to wait to reconnect after a disconnect.\n */\n withMaxReconnectDelayMs(maxReconnectDelayMs : number) : AwsIotMqtt5ClientConfigBuilder {\n this.config.maxReconnectDelayMs = maxReconnectDelayMs;\n return this;\n }\n\n /**\n * Overrides the amount of time that must elapse with an established connection before the reconnect delay is\n * reset to the minimum. This helps alleviate bandwidth-waste in fast reconnect cycles due to permission\n * failures on operations.\n *\n * @param minConnectedTimeToResetReconnectDelayMs the amount of time that must elapse with an established\n * connection before the reconnect delay is reset to the minimum\n */\n withMinConnectedTimeToResetReconnectDelayMs(minConnectedTimeToResetReconnectDelayMs : number) : AwsIotMqtt5ClientConfigBuilder {\n this.config.minConnectedTimeToResetReconnectDelayMs = minConnectedTimeToResetReconnectDelayMs;\n return this;\n }\n\n /**\n * Overrides the overall time interval to wait to establish an MQTT connection. If a complete MQTT connection\n * (from socket establishment all the way up to CONNACK receipt) has not been established before this timeout\n * expires, the connection attempt will be considered a failure.\n *\n * @param connectTimeoutMs overall time interval to wait to establish an MQTT connection\n */\n withConnectTimeoutMs(connectTimeoutMs: number) : AwsIotMqtt5ClientConfigBuilder {\n this.config.connectTimeoutMs = connectTimeoutMs;\n return this;\n }\n\n /**\n * Sets the opaque options set passed through to the underlying websocket implementation regardless of url factory.\n * Use this to control proxy settings amongst other things.\n *\n * @param options websocket transport options\n */\n withWebsocketTransportOptions(options: any) : AwsIotMqtt5ClientConfigBuilder {\n if (this.config.websocketOptions) {\n this.config.websocketOptions.wsOptions = options;\n }\n return this;\n }\n\n /**\n * Constructs an MQTT5 Client configuration object for creating mqtt5 clients.\n */\n build() : mqtt5.Mqtt5ClientConfig {\n // this is always set by the constructor, but check it to make typescript happy\n if (this.config.connectProperties) {\n this.config.connectProperties.username = iot_shared.buildMqtt5FinalUsername(this.customAuthConfig);\n if (this.customAuthConfig?.password) {\n this.config.connectProperties.password = this.customAuthConfig?.password;\n }\n }\n\n return this.config;\n }\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * A module containing support for a variety of cryptographic operations.\n *\n * @packageDocumentation\n * @module crypto\n * @mergeTarget\n */\n\nimport * as Crypto from \"crypto-js\";\nimport { fromUtf8 } from \"@aws-sdk/util-utf8-browser\";\nimport { Hashable } from \"../common/crypto\";\n\nexport { Hashable } from \"../common/crypto\";\n\n/**\n * Object that allows for continuous MD5 hashing of data.\n *\n * @category Crypto\n */\nexport class Md5Hash {\n private hash?: Crypto.WordArray;\n\n /**\n * Hashes additional data\n * @param data Additional data to hash\n */\n update(data: Hashable) {\n this.hash = Crypto.MD5(data.toString(), this.hash ? this.hash.toString() : undefined);\n }\n\n /**\n * Completes the hash computation and returns the final hash digest.\n *\n * @param truncate_to The maximum number of bytes to receive. Leave as undefined or 0 to receive the entire digest.\n *\n * @returns the final hash digest\n */\n finalize(truncate_to?: number): DataView {\n const digest = this.hash ? this.hash.toString() : '';\n const truncated = digest.substring(0, truncate_to ? truncate_to : digest.length);\n const bytes = fromUtf8(truncated);\n return new DataView(bytes.buffer);\n }\n}\n\n\n/**\n * Computes an MD5 hash. Use this if you don't need to stream the data you're hashing and can load the entire input\n * into memory.\n *\n * @param data The data to hash\n * @param truncate_to The maximum number of bytes to receive. Leave as undefined or 0 to receive the entire digest.\n *\n * @returns the data's hash digest\n *\n * @category Crypto\n */\nexport function hash_md5(data: Hashable, truncate_to?: number): DataView {\n const md5 = new Md5Hash();\n md5.update(data);\n return md5.finalize(truncate_to);\n}\n\n/**\n * Object that allows for continuous SHA256 hashing of data.\n *\n * @category Crypto\n */\nexport class Sha256Hash {\n private hash?: Crypto.WordArray;\n\n /**\n * Hashes additional data\n * @param data Additional data to hash\n */\n update(data: Hashable) {\n this.hash = Crypto.SHA256(data.toString(), this.hash ? this.hash.toString() : undefined);\n }\n\n /**\n * Completes the hash computation and returns the final hash digest.\n *\n * @param truncate_to The maximum number of bytes to receive. Leave as undefined or 0 to receive the entire digest.\n *\n * @returns the final hash digest\n */\n finalize(truncate_to?: number): DataView {\n const digest = this.hash ? this.hash.toString() : '';\n const truncated = digest.substring(0, truncate_to ? truncate_to : digest.length);\n const bytes = fromUtf8(truncated);\n return new DataView(bytes.buffer);\n }\n}\n\n/**\n * Computes an SHA256 hash. Use this if you don't need to stream the data you're hashing and can load the entire input\n * into memory.\n *\n * @param data The data to hash\n * @param truncate_to The maximum number of bytes to receive. Leave as undefined or 0 to receive the entire digest.\n *\n * @returns the data's hash digest\n *\n * @category Crypto\n */\nexport function hash_sha256(data: Hashable, truncate_to?: number): DataView {\n const digest = Crypto.SHA256(data.toString()).toString();\n const truncated = digest.substring(0, truncate_to ? truncate_to : digest.length);\n const bytes = fromUtf8(truncated);\n return new DataView(bytes.buffer);\n}\n\n/**\n * Object that allows for continuous SHA1 hashing of data.\n *\n * @category Crypto\n */\n export class Sha1Hash {\n private hash?: Crypto.WordArray;\n\n /**\n * Hashes additional data\n * @param data Additional data to hash\n */\n update(data: Hashable) {\n this.hash = Crypto.SHA1(data.toString(), this.hash ? this.hash.toString() : undefined);\n }\n\n /**\n * Completes the hash computation and returns the final hash digest.\n *\n * @param truncate_to The maximum number of bytes to receive. Leave as undefined or 0 to receive the entire digest.\n *\n * @returns the final hash digest\n */\n finalize(truncate_to?: number): DataView {\n const digest = this.hash ? this.hash.toString() : '';\n const truncated = digest.substring(0, truncate_to ? truncate_to : digest.length);\n const bytes = fromUtf8(truncated);\n return new DataView(bytes.buffer);\n }\n}\n\n/**\n * Computes an SHA1 hash. Use this if you don't need to stream the data you're hashing and can load the entire input\n * into memory.\n *\n * @param data The data to hash\n * @param truncate_to The maximum number of bytes to receive. Leave as undefined or 0 to receive the entire digest.\n *\n * @returns the data's hash digest\n *\n * @category Crypto\n */\nexport function hash_sha1(data: Hashable, truncate_to?: number): DataView {\n const digest = Crypto.SHA1(data.toString()).toString();\n const truncated = digest.substring(0, truncate_to ? truncate_to : digest.length);\n const bytes = fromUtf8(truncated);\n return new DataView(bytes.buffer);\n}\n\n/**\n * Object that allows for continuous hashing of data with an hmac secret.\n *\n * @category Crypto\n */\nexport class Sha256Hmac {\n private hmac: any;\n\n /**\n * Constructor for the Sha256Hmac class type\n * @param secret secret key to seed the hmac process with\n */\n constructor(secret: Hashable) {\n // @ts-ignore types file doesn't have this signature of create()\n this.hmac = Crypto.algo.HMAC.create(Crypto.algo.SHA256, secret);\n }\n\n /**\n * Hashes additional data\n * @param data Additional data to hash\n */\n update(data: Hashable) {\n this.hmac.update(data.toString());\n }\n\n /**\n * Completes the hash computation and returns the final hmac digest.\n *\n * @param truncate_to The maximum number of bytes to receive. Leave as undefined or 0 to receive the entire digest.\n *\n * @returns the final hmac digest\n */\n finalize(truncate_to?: number): DataView {\n const digest = this.hmac.finalize();\n const truncated = digest.toString().substring(0, truncate_to ? truncate_to : digest.length);\n const bytes = fromUtf8(truncated);\n return new DataView(bytes.buffer);\n }\n}\n\n/**\n * Computes an SHA256 HMAC. Use this if you don't need to stream the data you're hashing and can load the entire input\n * into memory.\n *\n * @param secret The key to use for the HMAC process\n * @param data The data to hash\n * @param truncate_to The maximum number of bytes to receive. Leave as undefined or 0 to receive the entire digest.\n *\n * @returns the data's hmac digest\n *\n * @category Crypto\n */\nexport function hmac_sha256(secret: Hashable, data: Hashable, truncate_to?: number): DataView {\n const hmac = new Sha256Hmac(secret);\n hmac.update(data);\n return hmac.finalize(truncate_to);\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * Library-specific error extension type\n *\n * @packageDocumentation\n * @module error\n * @mergeTarget\n */\n\nimport {ICrtError} from \"../common/error\";\n\nexport {ICrtError} from \"../common/error\";\n\n/**\n * Represents an error thrown by the CRT browser shim\n *\n * @category System\n */\nexport class CrtError extends Error implements ICrtError {\n\n readonly error_name?: string;\n\n /**\n * @param error - The original error, provided for context. Could be any type, often from underlying libraries\n */\n constructor(readonly error: any) {\n super(error.toString());\n\n this.error_name = error.toString();\n }\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing support for creating http connections and making requests on them.\n *\n * @packageDocumentation\n * @module http\n * @mergeTarget\n */\n\nimport {\n CommonHttpProxyOptions,\n HttpHeader,\n HttpHeaders as CommonHttpHeaders,\n HttpProxyAuthenticationType,\n HttpClientConnectionConnected,\n HttpClientConnectionError,\n HttpClientConnectionClosed,\n HttpStreamComplete,\n HttpStreamData,\n HttpStreamError\n} from '../common/http';\nexport { HttpHeader, HttpProxyAuthenticationType } from '../common/http';\nimport { BufferedEventEmitter } from '../common/event';\nimport { CrtError } from './error';\nimport * as axios from \"axios\";\nimport { ClientBootstrap, InputStream, SocketOptions, TlsConnectionOptions } from './io';\nimport { fromUtf8 } from '@aws-sdk/util-utf8-browser';\n\n/**\n * A collection of HTTP headers\n *\n * @category HTTP\n */\nexport class HttpHeaders implements CommonHttpHeaders {\n // Map from \"header\": [[\"HeAdEr\", \"value1\"], [\"HEADER\", \"value2\"], [\"header\", \"value3\"]]\n private headers: { [index: string]: [HttpHeader] } = {};\n\n /** Construct from a collection of [name, value] pairs\n *\n * @param headers list of HttpHeader values to seat in this object\n */\n constructor(headers: HttpHeader[] = []) {\n for (const header of headers) {\n this.add(header[0], header[1]);\n }\n }\n\n /**\n * Fetches the total length of all headers\n *\n * @returns the total length of all headers\n */\n get length(): number {\n let length = 0;\n for (let key in this.headers) {\n length += this.headers[key].length;\n }\n return length;\n }\n\n /**\n * Add a name/value pair\n * @param name The header name\n * @param value The header value\n */\n add(name: string, value: string) {\n let values = this.headers[name.toLowerCase()];\n if (values) {\n values.push([name, value]);\n } else {\n this.headers[name.toLowerCase()] = [[name, value]];\n }\n }\n\n /**\n * Set a name/value pair, replacing any existing values for the name\n * @param name - The header name\n * @param value - The header value\n */\n set(name: string, value: string) {\n this.headers[name.toLowerCase()] = [[name, value]];\n }\n\n /**\n * Get the list of values for the given name\n * @param name - The header name to look for\n * @return List of values, or empty list if none exist\n */\n get_values(name: string) {\n const values = [];\n const values_list = this.headers[name.toLowerCase()] || [];\n for (const entry of values_list) {\n values.push(entry[1]);\n }\n return values;\n }\n\n /**\n * Gets the first value for the given name, ignoring any additional values\n * @param name - The header name to look for\n * @param default_value - Value returned if no values are found for the given name\n * @return The first header value, or default if no values exist\n */\n get(name: string, default_value: string = \"\") {\n const values = this.headers[name.toLowerCase()];\n if (!values) {\n return default_value;\n }\n return values[0][1] || default_value;\n }\n\n /**\n * Removes all values for the given name\n * @param name - The header to remove all values for\n */\n remove(name: string) {\n delete this.headers[name.toLowerCase()];\n }\n\n /**\n * Removes a specific name/value pair\n * @param name - The header name to remove\n * @param value - The header value to remove\n */\n remove_value(name: string, value: string) {\n const key = name.toLowerCase();\n\n let values = this.headers[key];\n for (let idx = 0; idx < values.length; ++idx) {\n const entry = values[idx];\n if (entry[1] === value) {\n if (values.length === 1) {\n delete this.headers[key];\n } else {\n delete values[idx];\n }\n return;\n }\n }\n }\n\n /** Clears the entire header set */\n clear() {\n this.headers = {};\n }\n\n /**\n * Iterator. Allows for:\n * let headers = new HttpHeaders();\n * ...\n * for (const header of headers) { }\n */\n *[Symbol.iterator]() {\n for (const key in this.headers) {\n const values = this.headers[key];\n for (let entry of values) {\n yield entry;\n }\n }\n }\n\n /** @internal */\n _flatten(): HttpHeader[] {\n let flattened = [];\n for (const pair of this) {\n flattened.push(pair);\n }\n return flattened;\n }\n}\n\n/**\n * Options used when connecting to an HTTP endpoint via a proxy\n *\n * @category HTTP\n */\nexport class HttpProxyOptions extends CommonHttpProxyOptions {\n}\n\n/**\n * Represents a request to a web server from a client\n *\n * @category HTTP\n */\nexport class HttpRequest {\n\n /**\n * Constructor for the HttpRequest class\n *\n * @param method The verb to use for the request (i.e. GET, POST, PUT, DELETE, HEAD)\n * @param path The URI of the request\n * @param headers Additional custom headers to send to the server\n * @param body The request body, in the case of a POST or PUT request\n */\n constructor(\n public method: string,\n public path: string,\n public headers = new HttpHeaders(),\n public body?: InputStream) {\n }\n}\n\n/**\n * Represents an HTTP connection from a client to a server\n *\n * @category HTTP\n */\nexport class HttpClientConnection extends BufferedEventEmitter {\n public _axios: any;\n private axios_options: axios.AxiosRequestConfig;\n protected bootstrap: ClientBootstrap | undefined;\n protected socket_options?: SocketOptions;\n protected tls_options?: TlsConnectionOptions;\n protected proxy_options?: HttpProxyOptions;\n\n /**\n * Http connection constructor, signature synced to native version for compatibility\n *\n * @param bootstrap - (native only) leave undefined\n * @param host_name - endpoint to connection with\n * @param port - port to connect to\n * @param socketOptions - (native only) leave undefined\n * @param tlsOptions - instantiate for TLS, but actual value is unused in browse implementation\n * @param proxyOptions - options to control proxy usage when establishing the connection\n */\n constructor(\n bootstrap: ClientBootstrap | undefined,\n host_name: string,\n port: number,\n socketOptions?: SocketOptions,\n tlsOptions?: TlsConnectionOptions,\n proxyOptions?: HttpProxyOptions,\n ) {\n super();\n this.cork();\n\n this.bootstrap = bootstrap;\n this.socket_options = socketOptions;\n this.tls_options = tlsOptions;\n this.proxy_options = proxyOptions;\n const scheme = (this.tls_options || port === 443) ? 'https' : 'http'\n\n this.axios_options = {\n baseURL: `${scheme}://${host_name}:${port}/`\n };\n\n if (this.proxy_options) {\n this.axios_options.proxy = {\n host: this.proxy_options.host_name,\n port: this.proxy_options.port,\n };\n\n if (this.proxy_options.auth_method == HttpProxyAuthenticationType.Basic) {\n this.axios_options.proxy.auth = {\n username: this.proxy_options.auth_username || \"\",\n password: this.proxy_options.auth_password || \"\",\n };\n }\n }\n this._axios = axios.default.create(this.axios_options);\n setTimeout(() => {\n this.emit('connect');\n }, 0);\n }\n\n /**\n * Emitted when the connection is connected and ready to start streams\n *\n * @event\n */\n static CONNECT = 'connect';\n\n /**\n * Emitted when an error occurs on the connection\n *\n * @event\n */\n static ERROR = 'error';\n\n /**\n * Emitted when the connection has completed\n *\n * @event\n */\n static CLOSE = 'close';\n\n on(event: 'connect', listener: HttpClientConnectionConnected): this;\n\n on(event: 'error', listener: HttpClientConnectionError): this;\n\n on(event: 'close', listener: HttpClientConnectionClosed): this;\n\n // Override to allow uncorking on ready\n on(event: string | symbol, listener: (...args: any[]) => void): this {\n super.on(event, listener);\n if (event == 'connect') {\n setTimeout(() => {\n this.uncork();\n }, 0);\n }\n return this;\n }\n\n /**\n * Make a client initiated request to this connection.\n * @param request - The HttpRequest to attempt on this connection\n * @returns A new stream that will deliver events for the request\n */\n request(request: HttpRequest) {\n return stream_request(this, request);\n }\n\n /**\n * Ends the connection\n */\n close() {\n this.emit('close');\n this._axios = undefined;\n }\n}\n\nfunction stream_request(connection: HttpClientConnection, request: HttpRequest) {\n if (request == null || request == undefined) {\n throw new CrtError(\"HttpClientConnection stream_request: request not defined\");\n }\n\n const _to_object = (headers: HttpHeaders) => {\n // browsers refuse to let users configure host or user-agent\n const forbidden_headers = ['host', 'user-agent'];\n let obj: { [index: string]: string } = {};\n for (const header of headers) {\n if (forbidden_headers.indexOf(header[0].toLowerCase()) != -1) {\n continue;\n }\n obj[header[0]] = headers.get(header[0]);\n }\n return obj;\n }\n let body = (request.body) ? (request.body as InputStream).data : undefined;\n let stream = HttpClientStream._create(connection);\n stream.connection._axios.request({\n url: request.path,\n method: request.method.toLowerCase(),\n headers: _to_object(request.headers),\n body: body\n }).then((response: any) => {\n stream._on_response(response);\n }).catch((error: any) => {\n stream._on_error(error);\n });\n return stream;\n}\n\n\n/**\n * Listener signature for event emitted from an {@link HttpClientStream} when the http response headers have arrived.\n *\n * @param status_code http response status code\n * @param headers the response's set of headers\n *\n * @category HTTP\n */\nexport type HttpStreamResponse = (status_code: number, headers: HttpHeaders) => void;\n\n/**\n * Represents a single http message exchange (request/response) in HTTP.\n *\n * NOTE: Binding either the ready or response event will uncork any buffered events and start\n * event delivery\n *\n * @category HTTP\n */\nexport class HttpClientStream extends BufferedEventEmitter {\n private response_status_code?: number;\n\n private constructor(readonly connection: HttpClientConnection) {\n super();\n this.cork();\n }\n\n /**\n * HTTP status code returned from the server.\n * @return Either the status code, or undefined if the server response has not arrived yet.\n */\n status_code() {\n return this.response_status_code;\n }\n\n /**\n * Begin sending the request.\n *\n * The stream does nothing until this is called. Call activate() when you\n * are ready for its callbacks and events to fire.\n */\n activate() {\n setTimeout(() => {\n this.uncork();\n }, 0);\n }\n\n /**\n * Emitted when the http response headers have arrived.\n *\n * @event\n */\n static RESPONSE = 'response';\n\n /**\n * Emitted when http response data is available.\n *\n * @event\n */\n static DATA = 'data';\n\n /**\n * Emitted when an error occurs in stream processing\n *\n * @event\n */\n static ERROR = 'error';\n\n /**\n * Emitted when the stream has completed\n *\n * @event\n */\n static END = 'end';\n\n on(event: 'response', listener: HttpStreamResponse): this;\n\n on(event: 'data', listener: HttpStreamData): this;\n\n on(event: 'error', listener: HttpStreamError): this;\n\n on(event: 'end', listener: HttpStreamComplete): this;\n\n on(event: string | symbol, listener: (...args: any[]) => void): this {\n return super.on(event, listener);\n }\n\n // Private helpers for stream_request()\n /** @internal */\n static _create(connection: HttpClientConnection) {\n return new HttpClientStream(connection);\n }\n\n // Convert axios' single response into a series of events\n /** @internal */\n _on_response(response: any) {\n this.response_status_code = response.status;\n let headers = new HttpHeaders();\n for (let header in response.headers) {\n headers.add(header, response.headers[header]);\n }\n this.emit('response', this.response_status_code, headers);\n let data = response.data;\n if (data && !(data instanceof ArrayBuffer)) {\n data = fromUtf8(data.toString());\n }\n this.emit('data', data);\n this.emit('end');\n }\n\n // Gather as much information as possible from the axios error\n // and pass it on to the user\n /** @internal */\n _on_error(error: any) {\n let info = \"\";\n if (error.response) {\n this.response_status_code = error.response.status;\n info += `status_code=${error.response.status}`;\n if (error.response.headers) {\n info += ` headers=${JSON.stringify(error.response.headers)}`;\n }\n if (error.response.data) {\n info += ` data=${error.response.data}`;\n }\n } else {\n info = \"No response from server\";\n }\n\n this.connection.close();\n this.emit('error', new Error(`msg=${error.message}, connection=${JSON.stringify(this.connection)}, info=${info}`));\n }\n}\n\ninterface PendingRequest {\n resolve: (connection: HttpClientConnection) => void;\n reject: (error: CrtError) => void;\n}\n\n/**\n * Creates, manages, and vends connections to a given host/port endpoint\n *\n * @category HTTP\n */\nexport class HttpClientConnectionManager {\n private pending_connections = new Set();\n private live_connections = new Set();\n private free_connections: HttpClientConnection[] = [];\n private pending_requests: PendingRequest[] = [];\n\n\n /**\n * Constructor for the HttpClientConnectionManager class. Signature stays in sync with native implementation\n * for compatibility purposes (leads to some useless params)\n *\n * @param bootstrap - (native only) leave undefined\n * @param host - endpoint to pool connections for\n * @param port - port to connect to\n * @param max_connections - maximum allowed connection count\n * @param initial_window_size - (native only) leave as zero\n * @param socket_options - (native only) leave null\n * @param tls_opts - if not null TLS will be used, otherwise plain http will be used\n * @param proxy_options - configuration for establishing connections through a proxy\n */\n constructor(\n readonly bootstrap: ClientBootstrap | undefined,\n readonly host: string,\n readonly port: number,\n readonly max_connections: number,\n readonly initial_window_size: number,\n readonly socket_options?: SocketOptions,\n readonly tls_opts?: TlsConnectionOptions,\n readonly proxy_options?: HttpProxyOptions\n ) {\n\n }\n\n private remove(connection: HttpClientConnection) {\n this.pending_connections.delete(connection);\n this.live_connections.delete(connection);\n const free_idx = this.free_connections.indexOf(connection);\n if (free_idx != -1) {\n this.free_connections.splice(free_idx, 1);\n }\n }\n\n private resolve(connection: HttpClientConnection) {\n const request = this.pending_requests.shift();\n if (request) {\n request.resolve(connection);\n } else {\n this.free_connections.push(connection);\n }\n }\n\n private reject(error: CrtError) {\n const request = this.pending_requests.shift();\n if (request) {\n request.reject(error);\n }\n }\n\n private pump() {\n if (this.pending_requests.length == 0) {\n return;\n }\n // Try to service the request with a free connection\n {\n let connection = this.free_connections.pop();\n if (connection) {\n return this.resolve(connection);\n }\n }\n\n // If there's no more room, nothing can be resolved right now\n if ((this.live_connections.size + this.pending_connections.size) == this.max_connections) {\n return;\n }\n\n // There's room, create a new connection\n let connection = new HttpClientConnection(\n new ClientBootstrap(),\n this.host,\n this.port,\n this.socket_options,\n this.tls_opts,\n this.proxy_options);\n this.pending_connections.add(connection);\n const on_connect = () => {\n this.pending_connections.delete(connection);\n this.live_connections.add(connection);\n this.free_connections.push(connection);\n this.resolve(connection);\n }\n const on_error = (error: any) => {\n if (this.pending_connections.has(connection)) {\n // Connection never connected, error it out\n return this.reject(new CrtError(error));\n }\n // If the connection errors after use, get it out of rotation and replace it\n this.remove(connection);\n this.pump();\n }\n const on_close = () => {\n this.remove(connection);\n this.pump();\n }\n connection.on('connect', on_connect);\n connection.on('error', on_error);\n connection.on('close', on_close);\n }\n\n /**\n * Vends a connection from the pool\n * @returns A promise that results in an HttpClientConnection. When done with the connection, return\n * it via {@link release}\n */\n acquire(): Promise {\n return new Promise((resolve, reject) => {\n this.pending_requests.push({\n resolve: resolve,\n reject: reject\n });\n this.pump();\n });\n }\n\n /**\n * Returns an unused connection to the pool\n * @param connection - The connection to return\n */\n release(connection: HttpClientConnection) {\n this.free_connections.push(connection);\n this.pump();\n }\n\n /** Closes all connections and rejects all pending requests */\n close() {\n this.pending_requests.forEach((request) => {\n request.reject(new CrtError('HttpClientConnectionManager shutting down'));\n })\n }\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing a grab bag of support for core network I/O functionality, including sockets, TLS, DNS, logging,\n * error handling, streams, and connection -> thread mapping.\n *\n * Categories include:\n * - Network: socket configuration\n * - TLS: tls configuration\n * - Logging: logging controls and configuration\n * - IO: everything else\n *\n * @packageDocumentation\n * @module io\n * @mergeTarget\n */\n\nexport { TlsVersion, SocketType, SocketDomain } from \"../common/io\";\nimport { SocketType, SocketDomain } from \"../common/io\";\n\n/**\n * @return false, as ALPN is not configurable from the browser\n *\n * @category TLS\n*/\nexport function is_alpn_available(): boolean {\n return false;\n}\n\nexport type BodyData = string | object | ArrayBuffer | ArrayBufferView | Blob | File;\n\n/**\n * Wrapper for any sort of body data in requests. As the browser does not implement streaming,\n * this is merely an interface wrapper around a memory buffer.\n *\n * @category IO\n */\nexport class InputStream {\n constructor(public data: BodyData) {\n\n }\n}\n\n/**\n * Represents resources required to bootstrap a client connection, provided as\n * a stub for the browser API\n *\n * @category IO\n */\nexport class ClientBootstrap { };\n\n/**\n * Options for creating a {@link ClientTlsContext}. Provided as a stub for\n * browser API.\n *\n * @category TLS\n */\nexport type TlsContextOptions = any;\n\n/**\n * TLS options that are unique to a given connection using a shared TlsContext.\n * Provided as a stub for browser API.\n *\n * @category TLS\n */\nexport class TlsConnectionOptions {\n constructor(readonly tls_ctx: TlsContext, readonly server_name?: string, readonly alpn_list: string[] = []) {\n\n }\n};\n\n/**\n * TLS context used for TLS communications over sockets. Provided as a\n * stub for the browser API\n *\n * @category TLS\n */\nexport abstract class TlsContext {\n\n};\n\n/**\n * TLS context used for client TLS communications over sockets. Provided as a\n * stub for the browser API\n *\n * @category TLS\n */\nexport class ClientTlsContext extends TlsContext {\n constructor(options?: TlsContextOptions) {\n super();\n }\n};\n\n/**\n * Standard Berkeley socket style options.\n *\n * Provided for compatibility with nodejs, but this version is largely unused.\n * @category Network\n*/\nexport class SocketOptions {\n constructor(\n public type = SocketType.STREAM,\n public domain = SocketDomain.IPV6,\n public connect_timeout_ms = 5000,\n public keepalive = false,\n public keep_alive_interval_sec = 0,\n public keep_alive_timeout_sec = 0,\n public keep_alive_max_failed_probes = 0) {\n }\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * Module for AWS IoT MQTT client configuration and connection establishment.\n *\n * @packageDocumentation\n * @module iot\n * @mergeTarget\n */\n\nexport * from './aws_iot';\nexport * from './aws_iot_mqtt5';\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing support for mqtt connection establishment and operations.\n *\n * @packageDocumentation\n * @module mqtt\n * @mergeTarget\n */\n\nimport * as mqtt from \"mqtt\";\nimport * as WebsocketUtils from \"./ws\";\nimport * as auth from \"./auth\";\nimport { Trie, TrieOp, Node as TrieNode } from \"./trie\";\n\nimport { BufferedEventEmitter } from \"../common/event\";\nimport { CrtError } from \"../browser\";\nimport { ClientBootstrap, SocketOptions } from \"./io\";\nimport {\n QoS,\n Payload,\n MqttRequest,\n MqttSubscribeRequest,\n MqttWill,\n OnMessageCallback,\n MqttConnectionConnected,\n MqttConnectionDisconnected,\n MqttConnectionResumed,\n DEFAULT_RECONNECT_MIN_SEC,\n DEFAULT_RECONNECT_MAX_SEC,\n OnConnectionSuccessResult,\n OnConnectionFailedResult,\n OnConnectionClosedResult\n} from \"../common/mqtt\";\nimport { normalize_payload } from \"../common/mqtt_shared\";\n\nexport {\n QoS, Payload, MqttRequest, MqttSubscribeRequest, MqttWill, OnMessageCallback, MqttConnectionConnected, MqttConnectionDisconnected,\n MqttConnectionResumed, OnConnectionSuccessResult, OnConnectionFailedResult, OnConnectionClosedResult\n} from \"../common/mqtt\";\n\n/**\n * Listener signature for event emitted from an {@link MqttClientConnection} when an error occurs\n *\n * @param error the error that occurred\n *\n * @category MQTT\n */\nexport type MqttConnectionError = (error: CrtError) => void;\n\n/**\n * Listener signature for event emitted from an {@link MqttClientConnection} when the connection has been\n * interrupted unexpectedly.\n *\n * @param error description of the error that occurred\n *\n * @category MQTT\n */\nexport type MqttConnectionInterrupted = (error: CrtError) => void;\n\n/**\n * Listener signature for event emitted from an {@link MqttClientConnection} when the connection has been\n * connected successfully.\n *\n * This listener is invoked for every successful connect and every successful reconnect.\n *\n * @param callback_data Data returned containing information about the successful connection.\n *\n * @category MQTT\n */\nexport type MqttConnectionSuccess = (callback_data: OnConnectionSuccessResult) => void;\n\n/**\n * Listener signature for event emitted from an {@link MqttClientConnection} when the connection has failed\n * to connect.\n *\n * This listener is invoked for every failed connect and every failed reconnect.\n *\n * @param callback_data Data returned containing information about the failed connection.\n *\n * @category MQTT\n */\nexport type MqttConnectionFailure = (callback_data: OnConnectionFailedResult) => void;\n\n/**\n * Listener signature for event emitted from an {@link MqttClientConnection} when the connection has been\n * disconnected and shutdown successfully.\n *\n * @param callback_data Data returned containing information about the closed/disconnected connection.\n * Currently empty, but may contain data in the future.\n *\n * @category MQTT\n */\nexport type MqttConnectionClosed = (callback_data: OnConnectionClosedResult) => void;\n\n/**\n * @category MQTT\n */\nexport type WebsocketOptions = WebsocketUtils.WebsocketOptions;\n\n/**\n * @category MQTT\n */\nexport type AWSCredentials = auth.AWSCredentials;\n\n/**\n * Configuration options for an MQTT connection\n *\n * @category MQTT\n */\nexport interface MqttConnectionConfig {\n /**\n * ID to place in CONNECT packet. Must be unique across all devices/clients.\n * If an ID is already in use, the other client will be disconnected.\n */\n client_id: string;\n\n /** Server name to connect to */\n host_name: string;\n\n /** Server port to connect to */\n port: number;\n\n /** Socket options, ignored in browser */\n socket_options: SocketOptions;\n\n /**\n * Whether or not to start a clean session with each reconnect.\n * If True, the server will forget all subscriptions with each reconnect.\n * Set False to request that the server resume an existing session\n * or start a new session that may be resumed after a connection loss.\n * The `session_present` bool in the connection callback informs\n * whether an existing session was successfully resumed.\n * If an existing session is resumed, the server remembers previous subscriptions\n * and sends messages (with QoS1 or higher) that were published while the client was offline.\n */\n clean_session?: boolean;\n\n /**\n * The keep alive value, in seconds, to send in CONNECT packet.\n * A PING will automatically be sent at this interval.\n * The server will assume the connection is lost if no PING is received after 1.5X this value.\n * This duration must be longer than {@link ping_timeout}.\n */\n keep_alive?: number;\n\n /**\n * Milliseconds to wait for ping response before client assumes\n * the connection is invalid and attempts to reconnect.\n * This duration must be shorter than keep_alive_secs.\n * Alternatively, TCP keep-alive via :attr:`SocketOptions.keep_alive`\n * may accomplish this in a more efficient (low-power) scenario,\n * but keep-alive options may not work the same way on every platform and OS version.\n */\n ping_timeout?: number;\n\n /**\n * Milliseconds to wait for the response to the operation requires response by protocol.\n * Set to zero to disable timeout. Otherwise, the operation will fail if no response is\n * received within this amount of time after the packet is written to the socket.\n * It applied to PUBLISH (QoS>0) and UNSUBSCRIBE now.\n */\n protocol_operation_timeout?: number;\n\n /**\n * Minimum seconds to wait between reconnect attempts.\n * Must be <= {@link reconnect_max_sec}.\n * Wait starts at min and doubles with each attempt until max is reached.\n */\n reconnect_min_sec?: number;\n\n /**\n * Maximum seconds to wait between reconnect attempts.\n * Must be >= {@link reconnect_min_sec}.\n * Wait starts at min and doubles with each attempt until max is reached.\n */\n reconnect_max_sec?: number;\n\n /**\n * Will to send with CONNECT packet. The will is\n * published by the server when its connection to the client is unexpectedly lost.\n */\n will?: MqttWill;\n\n /** Username to connect with */\n username?: string;\n\n /** Password to connect with */\n password?: string;\n\n /** Options for the underlying websocket connection */\n websocket?: WebsocketOptions;\n\n /** AWS credentials, which will be used to sign the websocket request */\n credentials?: AWSCredentials;\n\n /** Options for the underlying credentials provider */\n credentials_provider?: auth.CredentialsProvider;\n}\n\n/**\n * MQTT client\n *\n * @category MQTT\n */\nexport class MqttClient {\n constructor(bootstrap?: ClientBootstrap) {\n\n }\n\n /**\n * Creates a new {@link MqttClientConnection}\n * @param config Configuration for the connection\n * @returns A new connection\n */\n new_connection(config: MqttConnectionConfig) {\n return new MqttClientConnection(this, config);\n }\n}\n\n/**\n * @internal\n */\nenum MqttBrowserClientState {\n Connected,\n Stopped\n};\n\n\n/** @internal */\nclass TopicTrie extends Trie {\n constructor() {\n super('/');\n }\n\n protected find_node(key: string, op: TrieOp) {\n const parts = this.split_key(key);\n let current = this.root;\n let parent = undefined;\n for (const part of parts) {\n let child = current.children.get(part);\n if (!child) {\n child = current.children.get('#');\n if (child) {\n return child;\n }\n\n child = current.children.get('+');\n }\n if (!child) {\n if (op == TrieOp.Insert) {\n current.children.set(part, child = new TrieNode(part));\n }\n else {\n return undefined;\n }\n }\n parent = current;\n current = child;\n }\n if (parent && op == TrieOp.Delete) {\n parent.children.delete(current.key!);\n }\n return current;\n }\n}\n\n/**\n * MQTT client connection\n *\n * @category MQTT\n */\nexport class MqttClientConnection extends BufferedEventEmitter {\n private connection: mqtt.MqttClient;\n private subscriptions = new TopicTrie();\n private connection_count = 0;\n\n // track number of times in a row that reconnect has been attempted\n // use exponential backoff between subsequent failed attempts\n private reconnect_count = 0;\n private reconnect_min_sec = DEFAULT_RECONNECT_MIN_SEC;\n private reconnect_max_sec = DEFAULT_RECONNECT_MAX_SEC;\n\n private currentState: MqttBrowserClientState = MqttBrowserClientState.Stopped;\n private desiredState: MqttBrowserClientState = MqttBrowserClientState.Stopped;\n private reconnectTask?: ReturnType;\n\n // The last error reported by MQTT.JS - or undefined if none has occurred or the error has been processed.\n private lastError? : Error;\n\n /**\n * @param client The client that owns this connection\n * @param config The configuration for this connection\n */\n constructor(\n readonly client: MqttClient,\n private config: MqttConnectionConfig) {\n super();\n\n const create_websocket_stream = (client: mqtt.MqttClient) => WebsocketUtils.create_websocket_stream(this.config);\n const transform_websocket_url = (url: string, options: mqtt.IClientOptions, client: mqtt.MqttClient) => WebsocketUtils.create_websocket_url(this.config);\n\n if (config == null || config == undefined) {\n throw new CrtError(\"MqttClientConnection constructor: config not defined\");\n }\n\n const will = this.config.will ? {\n topic: this.config.will.topic,\n payload: normalize_payload(this.config.will.payload),\n qos: this.config.will.qos,\n retain: this.config.will.retain,\n } : undefined;\n\n\n if (config.reconnect_min_sec !== undefined) {\n this.reconnect_min_sec = config.reconnect_min_sec;\n // clamp max, in case they only passed in min\n this.reconnect_max_sec = Math.max(this.reconnect_min_sec, this.reconnect_max_sec);\n }\n\n if (config.reconnect_max_sec !== undefined) {\n this.reconnect_max_sec = config.reconnect_max_sec;\n // clamp min, in case they only passed in max (or passed in min > max)\n this.reconnect_min_sec = Math.min(this.reconnect_min_sec, this.reconnect_max_sec);\n }\n\n this.reset_reconnect_times();\n\n // If the credentials are set but no the credentials_provider\n if (this.config.credentials_provider == undefined &&\n this.config.credentials != undefined) {\n const provider = new auth.StaticCredentialProvider(\n { aws_region: this.config.credentials.aws_region,\n aws_access_id: this.config.credentials.aws_access_id,\n aws_secret_key: this.config.credentials.aws_secret_key,\n aws_sts_token: this.config.credentials.aws_sts_token});\n this.config.credentials_provider = provider;\n }\n\n const websocketXform = (this.config.websocket || {}).protocol != 'wss-custom-auth' ? transform_websocket_url : undefined;\n this.connection = new mqtt.MqttClient(\n create_websocket_stream,\n {\n // service default is 1200 seconds\n keepalive: this.config.keep_alive ? this.config.keep_alive : 1200,\n clientId: this.config.client_id,\n connectTimeout: this.config.ping_timeout ? this.config.ping_timeout : 30 * 1000,\n clean: this.config.clean_session,\n username: this.config.username,\n password: this.config.password,\n reconnectPeriod: this.reconnect_max_sec * 1000,\n will: will,\n transformWsUrl: websocketXform,\n }\n );\n\n this.connection.on('connect', this.on_connect);\n this.connection.on('error', this.on_error);\n this.connection.on('message', this.on_message);\n this.connection.on('close', this.on_close);\n this.connection.on('end', this.on_disconnected);\n }\n\n /**\n * Emitted when the connection successfully establishes itself for the first time\n *\n * @event\n */\n static CONNECT = 'connect';\n\n /**\n * Emitted when connection has disconnected sucessfully.\n *\n * @event\n */\n static DISCONNECT = 'disconnect';\n\n /**\n * Emitted when an error occurs. The error will contain the error\n * code and message.\n *\n * @event\n */\n static ERROR = 'error';\n\n /**\n * Emitted when the connection is dropped unexpectedly. The error will contain the error\n * code and message. The underlying mqtt implementation will attempt to reconnect.\n *\n * @event\n */\n static INTERRUPT = 'interrupt';\n\n /**\n * Emitted when the connection reconnects (after an interrupt). Only triggers on connections after the initial one.\n *\n * @event\n */\n static RESUME = 'resume';\n\n /**\n * Emitted when any MQTT publish message arrives.\n *\n * @event\n */\n static MESSAGE = 'message';\n\n /**\n * Emitted on every successful connect and reconnect.\n * Will contain a boolean indicating whether the connection resumed a session.\n *\n * @event\n */\n static CONNECTION_SUCCESS = 'connection_success';\n\n /**\n * Emitted on an unsuccessful connect and reconnect.\n * Will contain an error code indicating the reason for the unsuccessful connection.\n *\n * @event\n */\n static CONNECTION_FAILURE = 'connection_failure';\n\n /**\n * Emitted when the MQTT connection was disconnected and shutdown successfully.\n *\n * @event\n */\n static CLOSED = 'closed'\n\n on(event: 'connect', listener: MqttConnectionConnected): this;\n\n on(event: 'disconnect', listener: MqttConnectionDisconnected): this;\n\n on(event: 'error', listener: MqttConnectionError): this;\n\n on(event: 'interrupt', listener: MqttConnectionInterrupted): this;\n\n on(event: 'connection_success', listener: MqttConnectionSuccess): this;\n\n on(event: 'connection_failure', listener: MqttConnectionFailure): this;\n\n on(event: 'closed', listener: MqttConnectionClosed): this;\n\n on(event: 'resume', listener: MqttConnectionResumed): this;\n\n on(event: 'message', listener: OnMessageCallback): this;\n\n on(event: string | symbol, listener: (...args: any[]) => void): this {\n return super.on(event, listener);\n }\n\n /**\n * Open the actual connection to the server (async).\n * @returns A Promise which completes whether the connection succeeds or fails.\n * If connection fails, the Promise will reject with an exception.\n * If connection succeeds, the Promise will return a boolean that is\n * true for resuming an existing session, or false if the session is new\n */\n async connect() {\n this.desiredState = MqttBrowserClientState.Connected;\n\n setTimeout(() => { this.uncork() }, 0);\n return new Promise(async (resolve, reject) => {\n let provider = this.config.credentials_provider;\n if (provider) {\n await provider.refreshCredentials();\n }\n\n const on_connect_error = (error: Error) => {\n let crtError = new CrtError(error);\n let failureCallbackData = { error: crtError } as OnConnectionFailedResult;\n this.emit('connection_failure', failureCallbackData);\n\n reject(crtError);\n };\n this.connection.once('error', on_connect_error);\n\n this.connection.once('connect', (connack: mqtt.IConnackPacket) => {\n this.connection.removeListener('error', on_connect_error);\n resolve(connack.sessionPresent);\n });\n });\n }\n\n /**\n * The connection will automatically reconnect. To cease reconnection attempts, call {@link disconnect}.\n * To resume the connection, call {@link connect}.\n * @deprecated\n */\n async reconnect() {\n return this.connect();\n }\n\n /**\n * Publish message (async).\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * @param topic Topic name\n * @param payload Contents of message\n * @param qos Quality of Service for delivering this message\n * @param retain If true, the server will store the message and its QoS so that it can be\n * delivered to future subscribers whose subscriptions match the topic name\n * @returns Promise which returns a {@link MqttRequest} which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * For QoS 2, completes when PUBCOMP is received.\n */\n async publish(topic: string, payload: Payload, qos: QoS, retain: boolean = false): Promise {\n // Skip payload since it can be several different types\n if (typeof(topic) !== 'string') {\n return Promise.reject(\"topic is not a string\");\n }\n if (typeof(qos) !== 'number') {\n return Promise.reject(\"qos is not a number\");\n }\n if (typeof(retain) !== 'boolean') {\n return Promise.reject('retain is not a boolean');\n }\n\n let payload_data = normalize_payload(payload);\n return new Promise((resolve, reject) => {\n this.connection.publish(topic, payload_data, { qos: qos, retain: retain }, (error, packet) => {\n if (error) {\n reject(new CrtError(error));\n return this.on_error(error);\n }\n\n let id = undefined;\n if (qos != QoS.AtMostOnce) {\n id = (packet as mqtt.IPublishPacket).messageId;\n }\n resolve({ packet_id: id });\n });\n });\n }\n\n /**\n * Subscribe to a topic filter (async).\n * The client sends a SUBSCRIBE packet and the server responds with a SUBACK.\n *\n * subscribe() may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `callback` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * @param topic Subscribe to this topic filter, which may include wildcards\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param on_message Optional callback invoked when message received.\n * @returns Promise which returns a {@link MqttSubscribeRequest} which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n */\n async subscribe(topic: string, qos: QoS, on_message?: OnMessageCallback): Promise {\n if (typeof(topic) !== 'string') {\n return Promise.reject(\"topic is not a string\");\n }\n if (typeof(qos) !== 'number') {\n return Promise.reject(\"qos is not a number\");\n }\n\n this.subscriptions.insert(topic, on_message);\n return new Promise((resolve, reject) => {\n this.connection.subscribe(topic, { qos: qos }, (error, packet) => {\n if (error) {\n reject(new CrtError(error))\n return this.on_error(error);\n }\n const sub = (packet as mqtt.ISubscriptionGrant[])[0];\n resolve({ topic: sub.topic, qos: sub.qos });\n });\n });\n }\n\n /**\n * Unsubscribe from a topic filter (async).\n * The client sends an UNSUBSCRIBE packet, and the server responds with an UNSUBACK.\n * @param topic The topic filter to unsubscribe from. May contain wildcards.\n * @returns Promise which returns a {@link MqttRequest} which will contain the packet id\n * of the UNSUBSCRIBE packet being acknowledged. Promise is resolved when an\n * UNSUBACK is received from the server or is rejected when an exception occurs.\n */\n async unsubscribe(topic: string): Promise {\n if (typeof(topic) !== 'string') {\n return Promise.reject(\"topic is not a string\");\n }\n\n this.subscriptions.remove(topic);\n return new Promise((resolve, reject) => {\n this.connection.unsubscribe(topic, undefined, (error?: Error, packet?: mqtt.Packet) => {\n if (error) {\n reject(new CrtError(error));\n return this.on_error(error);\n }\n resolve({\n packet_id: packet\n ? (packet as mqtt.IUnsubackPacket).messageId\n : undefined,\n });\n });\n\n });\n }\n\n /**\n * Close the connection (async).\n * @returns Promise which completes when the connection is closed.\n */\n async disconnect() {\n this.desiredState = MqttBrowserClientState.Stopped;\n\n /* If the user wants to disconnect, stop the recurrent connection task */\n if (this.reconnectTask) {\n clearTimeout(this.reconnectTask);\n this.reconnectTask = undefined;\n }\n\n return new Promise((resolve) => {\n /*\n * The original implementation did not force the disconnect so in our update to fix the promise resolution,\n * we need to keep that contract.\n */\n this.connection.end(false, {}, resolve);\n });\n }\n\n private on_connect = (connack: mqtt.IConnackPacket) => {\n this.on_online(connack.sessionPresent);\n }\n\n private on_online = (session_present: boolean) => {\n this.currentState = MqttBrowserClientState.Connected;\n\n if (++this.connection_count == 1) {\n this.emit('connect', session_present);\n } else {\n /** Reset reconnect times after reconnect succeed. */\n this.reset_reconnect_times();\n this.emit('resume', 0, session_present);\n }\n\n // Call connection success every time we connect, whether it is a first connect or a reconnect\n let successCallbackData = { session_present: session_present } as OnConnectionSuccessResult;\n this.emit('connection_success', successCallbackData);\n }\n\n private on_close = () => {\n let lastError : Error | undefined = this.lastError;\n\n /*\n * Only emit an interruption event if we were connected, otherwise we just failed to reconnect after\n * a disconnection.\n */\n if (this.currentState == MqttBrowserClientState.Connected) {\n this.currentState = MqttBrowserClientState.Stopped;\n this.emit('interrupt', -1);\n\n /* Did we intend to disconnect? If so, then emit the event */\n if (this.desiredState == MqttBrowserClientState.Stopped) {\n this.emit(\"closed\");\n }\n }\n\n /* Only try and reconnect if our desired state is connected, or in other words, no one has called disconnect() */\n if (this.desiredState == MqttBrowserClientState.Connected) {\n let crtError = new CrtError(lastError?.toString() ?? \"connectionFailure\")\n let failureCallbackData = { error: crtError } as OnConnectionFailedResult;\n this.emit('connection_failure', failureCallbackData);\n\n const waitTime = this.get_reconnect_time_sec();\n this.reconnectTask = setTimeout(() => {\n /** Emit reconnect after backoff time */\n this.reconnect_count++;\n this.connection.reconnect();\n },\n waitTime * 1000);\n }\n\n this.lastError = undefined;\n }\n\n private on_disconnected = () => {\n this.emit('disconnect');\n\n /**\n * This shouldn't ever occur, but in THEORY it could be possible to have on_disconnected called with the intent\n * to disconnect without on_close called first. This would properly emit 'closed' should that unlikely event occur.\n */\n if (this.currentState == MqttBrowserClientState.Connected && this.desiredState == MqttBrowserClientState.Stopped) {\n let closedCallbackData = {} as OnConnectionClosedResult;\n this.emit(\"closed\", closedCallbackData);\n }\n }\n\n private on_error = (error: Error) => {\n this.lastError = error;\n this.emit('error', new CrtError(error))\n }\n\n private on_message = (topic: string, payload: Buffer, packet: mqtt.IPublishPacket) => {\n // pass payload as ArrayBuffer\n const array_buffer = payload.buffer.slice(payload.byteOffset, payload.byteOffset + payload.byteLength)\n\n const callback = this.subscriptions.find(topic);\n if (callback) {\n callback(topic, array_buffer, packet.dup, packet.qos, packet.retain);\n }\n this.emit('message', topic, array_buffer, packet.dup, packet.qos, packet.retain);\n }\n\n private reset_reconnect_times() {\n this.reconnect_count = 0;\n }\n\n /**\n * Returns seconds until next reconnect attempt.\n */\n private get_reconnect_time_sec(): number {\n if (this.reconnect_min_sec == 0 && this.reconnect_max_sec == 0) {\n return 0;\n }\n\n // Uses \"FullJitter\" backoff algorithm, described here:\n // https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/\n // We slightly vary the algorithm described on the page,\n // which takes (base,cap) and may result in 0.\n // But we take (min,max) as parameters, and don't don't allow results less than min.\n const cap = this.reconnect_max_sec - this.reconnect_min_sec;\n const base = Math.max(this.reconnect_min_sec, 1);\n /** Use Math.pow() since IE does not support ** operator */\n const sleep = Math.random() * Math.min(cap, base * Math.pow(2, this.reconnect_count));\n return this.reconnect_min_sec + sleep;\n }\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * Browser specific MQTT5 client implementation\n *\n * [MQTT5 Client User Guide](https://www.github.com/awslabs/aws-crt-nodejs/blob/main/MQTT5-UserGuide.md)\n *\n * @packageDocumentation\n * @module mqtt5\n * @mergeTarget\n *\n */\n\nimport {BufferedEventEmitter} from \"../common/event\";\nimport * as mqtt from \"mqtt\"; /* The mqtt-js external dependency */\nimport * as mqtt5 from \"../common/mqtt5\";\nimport {OutboundTopicAliasBehaviorType} from \"../common/mqtt5\";\nimport * as mqtt5_packet from \"../common/mqtt5_packet\"\nimport {CrtError} from \"./error\";\nimport * as WebsocketUtils from \"./ws\";\nimport * as mqtt_utils from \"./mqtt5_utils\";\nimport * as mqtt_shared from \"../common/mqtt_shared\";\nimport * as auth from \"./auth\";\n\nexport * from \"../common/mqtt5\";\nexport * from '../common/mqtt5_packet';\n\n/**\n * Factory function that allows the user to completely control the url used to form the websocket handshake\n * request.\n */\nexport type Mqtt5WebsocketUrlFactory = () => string;\n\n/**\n * Type of url to construct when establishing an MQTT5 connection over websockets\n */\nexport enum Mqtt5WebsocketUrlFactoryType {\n\n /**\n * Websocket connection over plain-text with no additional handshake transformation\n */\n Ws = 1,\n\n /**\n * Websocket connection over TLS with no additional handshake transformation\n */\n Wss = 2,\n\n /**\n * Websocket connection over TLS with a handshake signed by the Aws Sigv4 signing process\n */\n Sigv4 = 3,\n\n /**\n * Websocket connection whose url is formed by a user-supplied callback function\n */\n Custom = 4\n}\n\n/**\n * Websocket factory options discriminated union variant for untransformed connections over plain-text\n */\nexport interface Mqtt5WebsocketUrlFactoryWsOptions {\n urlFactory: Mqtt5WebsocketUrlFactoryType.Ws;\n};\n\n/**\n * Websocket factory options discriminated union variant for untransformed connections over TLS\n */\nexport interface Mqtt5WebsocketUrlFactoryWssOptions {\n urlFactory: Mqtt5WebsocketUrlFactoryType.Wss;\n};\n\n/**\n * Websocket factory options discriminated union variant for untransformed connections over TLS signed by\n * the AWS Sigv4 signing process.\n */\nexport interface Mqtt5WebsocketUrlFactorySigv4Options {\n urlFactory : Mqtt5WebsocketUrlFactoryType.Sigv4;\n\n /**\n * AWS Region to sign against.\n */\n region?: string;\n\n /**\n * Provider to source AWS credentials from\n */\n credentialsProvider: auth.CredentialsProvider;\n}\n\n/**\n * Websocket factory options discriminated union variant for arbitrarily transformed handshake urls.\n */\nexport interface Mqtt5WebsocketUrlFactoryCustomOptions {\n urlFactory: Mqtt5WebsocketUrlFactoryType.Custom;\n\n customUrlFactory: Mqtt5WebsocketUrlFactory;\n};\n\n/**\n * Union of all websocket factory option possibilities.\n */\nexport type Mqtt5WebsocketUrlFactoryOptions = Mqtt5WebsocketUrlFactoryWsOptions | Mqtt5WebsocketUrlFactoryWssOptions | Mqtt5WebsocketUrlFactorySigv4Options | Mqtt5WebsocketUrlFactoryCustomOptions;\n\n/**\n * Browser-specific websocket configuration options for connection establishment\n */\nexport interface Mqtt5WebsocketConfig {\n\n /**\n * Options determining how the websocket url is created.\n */\n urlFactoryOptions : Mqtt5WebsocketUrlFactoryOptions;\n\n /**\n * Opaque options set passed through to the underlying websocket implementation regardless of url factory.\n * Use this to control proxy settings amongst other things.\n */\n wsOptions?: any;\n}\n\n/**\n * Configuration options for mqtt5 client creation.\n */\nexport interface Mqtt5ClientConfig {\n\n /**\n * Host name of the MQTT server to connect to.\n */\n hostName: string;\n\n /**\n * Network port of the MQTT server to connect to.\n */\n port: number;\n\n /**\n * Controls how the MQTT5 client should behave with respect to MQTT sessions.\n */\n sessionBehavior? : mqtt5.ClientSessionBehavior;\n\n /**\n * Controls how the reconnect delay is modified in order to smooth out the distribution of reconnection attempt\n * timepoints for a large set of reconnecting clients.\n */\n retryJitterMode? : mqtt5.RetryJitterType;\n\n /**\n * Minimum amount of time to wait to reconnect after a disconnect. Exponential backoff is performed with jitter\n * after each connection failure.\n */\n minReconnectDelayMs? : number;\n\n /**\n * Maximum amount of time to wait to reconnect after a disconnect. Exponential backoff is performed with jitter\n * after each connection failure.\n */\n maxReconnectDelayMs? : number;\n\n /**\n * Amount of time that must elapse with an established connection before the reconnect delay is reset to the minimum.\n * This helps alleviate bandwidth-waste in fast reconnect cycles due to permission failures on operations.\n */\n minConnectedTimeToResetReconnectDelayMs? : number;\n\n /**\n * All configurable options with respect to the CONNECT packet sent by the client, including the will. These\n * connect properties will be used for every connection attempt made by the client.\n */\n connectProperties?: mqtt5_packet.ConnectPacket;\n\n /**\n * Overall time interval to wait to establish an MQTT connection. If a complete MQTT connection (from socket\n * establishment all the way up to CONNACK receipt) has not been established before this timeout expires,\n * the connection attempt will be considered a failure.\n */\n connectTimeoutMs? : number;\n\n /**\n * Additional controls for client behavior with respect to topic alias usage.\n *\n * If this setting is left undefined, then topic aliasing behavior will be disabled.\n */\n topicAliasingOptions? : mqtt5.TopicAliasingOptions\n\n /**\n * Options for the underlying websocket connection\n *\n * @group Browser-only\n */\n websocketOptions?: Mqtt5WebsocketConfig;\n}\n\n/**\n * @internal\n *\n * Mqtt-js only supports reconnect on a fixed delay.\n *\n * This helper class allows for variable time-delay rescheduling of reconnect attempts by implementing the\n * reconnect delay options supported by the native client. Variable-delay reconnect actually happens by configuring\n * the mqtt-js client to have a much longer reconnect delay than our configured maximum and then letting this class\n * \"interrupt\" that long reconnect delay with the real, shorter wait-then-connect each time.\n */\nclass ReconnectionScheduler {\n private connectionFailureCount: number;\n private lastReconnectDelay: number | undefined;\n private resetConnectionFailureCountTask : ReturnType | undefined;\n private reconnectionTask : ReturnType | undefined;\n\n constructor(private browserClient: mqtt.MqttClient, private clientConfig: Mqtt5ClientConfig) {\n this.connectionFailureCount = 0;\n this.lastReconnectDelay = 0;\n this.resetConnectionFailureCountTask = undefined;\n this.reconnectionTask = undefined;\n this.lastReconnectDelay = undefined;\n }\n\n /**\n * Invoked by the client when a successful connection is established. Schedules the task that will reset the\n * delay if a configurable amount of time elapses with a good connection.\n */\n onSuccessfulConnection() : void {\n this.clearTasks();\n\n this.resetConnectionFailureCountTask = setTimeout(() => {\n this.connectionFailureCount = 0;\n this.lastReconnectDelay = undefined;\n }, this.clientConfig.minConnectedTimeToResetReconnectDelayMs ?? mqtt_utils.DEFAULT_MIN_CONNECTED_TIME_TO_RESET_RECONNECT_DELAY_MS);\n }\n\n /**\n * Invoked by the client after a disconnection or connection failure occurs. Schedules the next reconnect\n * task.\n */\n onConnectionFailureOrDisconnection() : void {\n this.clearTasks();\n\n let nextDelay : number = this.calculateNextReconnectDelay();\n\n this.lastReconnectDelay = nextDelay;\n this.connectionFailureCount += 1;\n\n this.reconnectionTask = setTimeout(async () => {\n let wsOptions = this.clientConfig.websocketOptions;\n if (wsOptions && wsOptions.urlFactoryOptions.urlFactory == Mqtt5WebsocketUrlFactoryType.Sigv4) {\n let sigv4Options = wsOptions.urlFactoryOptions as Mqtt5WebsocketUrlFactorySigv4Options;\n if (sigv4Options.credentialsProvider) {\n await sigv4Options.credentialsProvider.refreshCredentials();\n }\n }\n this.browserClient.reconnect();\n }, nextDelay);\n }\n\n /**\n * Resets any reconnect/clear-delay tasks.\n */\n clearTasks() : void {\n if (this.reconnectionTask) {\n clearTimeout(this.reconnectionTask);\n }\n\n if (this.resetConnectionFailureCountTask) {\n clearTimeout(this.resetConnectionFailureCountTask);\n }\n }\n\n private randomInRange(min: number, max: number) : number {\n return min + (max - min) * Math.random();\n }\n\n /**\n * Computes the next reconnect delay based on the Jitter/Retry configuration.\n * Implements jitter calculations in https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/\n * @private\n */\n private calculateNextReconnectDelay() : number {\n const jitterType : mqtt5.RetryJitterType = this.clientConfig.retryJitterMode ?? mqtt5.RetryJitterType.Default;\n const [minDelay, maxDelay] : [number, number] = mqtt_utils.getOrderedReconnectDelayBounds(this.clientConfig.minReconnectDelayMs, this.clientConfig.maxReconnectDelayMs);\n const clampedFailureCount : number = Math.min(52, this.connectionFailureCount);\n let delay : number = 0;\n\n if (jitterType == mqtt5.RetryJitterType.None) {\n delay = minDelay * Math.pow(2, clampedFailureCount);\n } else if (jitterType == mqtt5.RetryJitterType.Decorrelated && this.lastReconnectDelay) {\n delay = this.randomInRange(minDelay, 3 * this.lastReconnectDelay);\n } else {\n delay = this.randomInRange(minDelay, Math.min(maxDelay, minDelay * Math.pow(2, clampedFailureCount)));\n }\n\n delay = Math.min(maxDelay, delay);\n this.lastReconnectDelay = delay;\n\n return delay;\n }\n}\n\n/**\n * Elements of a simple state machine that allows us to adapt the mqtt-js control model to our mqtt5 client\n * control model (start/stop).\n *\n * @internal\n */\nenum Mqtt5ClientState {\n Stopped = 0,\n Running = 1,\n Stopping = 2,\n Restarting = 3,\n}\n\n/**\n * Elements of a simple state machine that allows us to adapt the mqtt-js event set to our mqtt5 client's\n * lifecycle event set.\n *\n * @internal\n */\nenum Mqtt5ClientLifecycleEventState {\n None = 0,\n Connecting = 1,\n Connected = 2,\n Disconnected = 3,\n}\n\n/**\n * Browser specific MQTT5 client implementation\n *\n * [MQTT5 Client User Guide](https://www.github.com/awslabs/aws-crt-nodejs/blob/main/MQTT5-UserGuide.md)\n */\nexport class Mqtt5Client extends BufferedEventEmitter implements mqtt5.IMqtt5Client {\n private browserClient?: mqtt.MqttClient;\n private state : Mqtt5ClientState;\n private lifecycleEventState : Mqtt5ClientLifecycleEventState;\n private lastDisconnect? : mqtt5_packet.DisconnectPacket;\n private lastError? : Error;\n private reconnectionScheduler? : ReconnectionScheduler;\n private mqttJsConfig : mqtt.IClientOptions;\n private topicAliasBindings : Map;\n\n /**\n * Client constructor\n *\n * @param config The configuration for this client\n */\n constructor(private config: Mqtt5ClientConfig) {\n super();\n\n this.mqttJsConfig = mqtt_utils.create_mqtt_js_client_config_from_crt_client_config(this.config);\n this.state = Mqtt5ClientState.Stopped;\n this.lifecycleEventState = Mqtt5ClientLifecycleEventState.None;\n this.topicAliasBindings = new Map();\n }\n\n /**\n * Triggers cleanup of native resources associated with the MQTT5 client. On the browser, the implementation is\n * an empty function.\n */\n close() {}\n\n /**\n * Notifies the MQTT5 client that you want it to maintain connectivity to the configured endpoint.\n * The client will attempt to stay connected using the properties of the reconnect-related parameters\n * in the mqtt5 client configuration.\n *\n * This is an asynchronous operation.\n */\n start() {\n if (this.state == Mqtt5ClientState.Stopped) {\n this.lifecycleEventState = Mqtt5ClientLifecycleEventState.Connecting;\n this.lastDisconnect = undefined;\n\n /* pause event emission until everything is fully-initialized */\n this.cork();\n this.emit('attemptingConnect');\n\n const create_websocket_stream = (client: mqtt.MqttClient) => WebsocketUtils.create_mqtt5_websocket_stream(this.config);\n this.browserClient = new mqtt.MqttClient(create_websocket_stream, this.mqttJsConfig);\n\n // hook up events\n this.browserClient.on('end', () => {this._on_stopped_internal();});\n this.browserClient.on('reconnect', () => {this.on_attempting_connect();});\n this.browserClient.on('connect', (connack: mqtt.IConnackPacket) => {this.on_connection_success(connack);});\n this.browserClient.on('message', (topic: string, payload: Buffer, packet: mqtt.IPublishPacket) => { this.on_message(topic, payload, packet);});\n this.browserClient.on('error', (error: Error) => { this.on_browser_client_error(error); });\n this.browserClient.on('close', () => { this.on_browser_close(); });\n this.browserClient.on('disconnect', (packet: mqtt.IDisconnectPacket) => { this.on_browser_disconnect_packet(packet); });\n\n this.reconnectionScheduler = new ReconnectionScheduler(this.browserClient, this.config);\n\n this.state = Mqtt5ClientState.Running;\n\n /* unpause event emission */\n this.uncork();\n } else if (this.state == Mqtt5ClientState.Stopping) {\n this.state = Mqtt5ClientState.Restarting;\n }\n }\n\n /**\n * Notifies the MQTT5 client that you want it to end connectivity to the configured endpoint, disconnecting any\n * existing connection and halting reconnection attempts.\n *\n * This is an asynchronous operation. Once the process completes, no further events will be emitted until the client\n * has {@link start} invoked. Invoking {@link start start()} after a {@link stop stop()} will always result in\n * a new MQTT session.\n *\n * @param disconnectPacket (optional) properties of a DISCONNECT packet to send as part of the shutdown process\n */\n stop(disconnectPacket?: mqtt5_packet.DisconnectPacket) {\n if (this.state == Mqtt5ClientState.Running) {\n if (disconnectPacket) {\n this.browserClient?.end(true, mqtt_utils.transform_crt_disconnect_to_mqtt_js_disconnect(disconnectPacket));\n } else {\n this.browserClient?.end(true);\n }\n this.state = Mqtt5ClientState.Stopping;\n } else if (this.state == Mqtt5ClientState.Restarting) {\n this.state = Mqtt5ClientState.Stopping;\n }\n }\n\n /**\n * Subscribe to one or more topic filters by queuing a SUBSCRIBE packet to be sent to the server.\n *\n * @param packet SUBSCRIBE packet to send to the server\n * @returns a promise that will be rejected with an error or resolved with the SUBACK response\n */\n async subscribe(packet: mqtt5_packet.SubscribePacket) : Promise {\n return new Promise((resolve, reject) => {\n\n try {\n if (!this.browserClient) {\n reject(new Error(\"Client is stopped and cannot subscribe\"));\n return;\n }\n\n if (!packet) {\n reject(new Error(\"Invalid subscribe packet\"));\n return;\n }\n\n let subMap: mqtt.ISubscriptionMap = mqtt_utils.transform_crt_subscribe_to_mqtt_js_subscription_map(packet);\n let subOptions: mqtt.IClientSubscribeOptions = mqtt_utils.transform_crt_subscribe_to_mqtt_js_subscribe_options(packet);\n\n // @ts-ignore\n this.browserClient.subscribe(subMap, subOptions, (error, grants) => {\n if (error) {\n reject(error);\n return;\n }\n\n const suback: mqtt5_packet.SubackPacket = mqtt_utils.transform_mqtt_js_subscription_grants_to_crt_suback(grants);\n resolve(suback);\n });\n } catch (err) {\n reject(err);\n }\n });\n }\n\n /**\n * Unsubscribe from one or more topic filters by queuing an UNSUBSCRIBE packet to be sent to the server.\n *\n * @param packet UNSUBSCRIBE packet to send to the server\n * @returns a promise that will be rejected with an error or resolved with the UNSUBACK response\n */\n async unsubscribe(packet: mqtt5_packet.UnsubscribePacket) : Promise {\n\n return new Promise((resolve, reject) => {\n\n try {\n if (!this.browserClient) {\n reject(new Error(\"Client is stopped and cannot unsubscribe\"));\n return;\n }\n\n if (!packet) {\n reject(new Error(\"Invalid unsubscribe packet\"));\n return;\n }\n\n let topicFilters: string[] = packet.topicFilters;\n let unsubOptions: Object = mqtt_utils.transform_crt_unsubscribe_to_mqtt_js_unsubscribe_options(packet);\n\n this.browserClient.unsubscribe(topicFilters, unsubOptions, (error, packet) => {\n if (error) {\n reject(error);\n return;\n }\n\n /*\n * sigh, mqtt-js doesn't emit the unsuback packet, we have to make something up that won't reflect\n * reality.\n */\n if (!packet || packet.cmd !== 'unsuback') {\n /* this is a complete lie */\n let unsuback: mqtt5_packet.UnsubackPacket = {\n type: mqtt5_packet.PacketType.Unsuback,\n reasonCodes: topicFilters.map((filter: string, index: number, array: string[]): mqtt5_packet.UnsubackReasonCode => {\n return mqtt5_packet.UnsubackReasonCode.Success;\n })\n };\n resolve(unsuback);\n } else {\n const unsuback: mqtt5_packet.UnsubackPacket = mqtt_utils.transform_mqtt_js_unsuback_to_crt_unsuback(packet as mqtt.IUnsubackPacket);\n resolve(unsuback);\n }\n });\n } catch (err) {\n reject(err);\n }\n });\n }\n\n private reset_topic_aliases() {\n this.topicAliasBindings.clear();\n }\n\n private bind_topic_alias(alias: number, topic: string) {\n this.topicAliasBindings.set(alias, topic);\n }\n\n private is_topic_alias_bound(alias: number, topic: string) {\n if (!topic) {\n return false;\n }\n\n return this.topicAliasBindings.get(alias) === topic;\n }\n\n /**\n * Send a message to subscribing clients by queuing a PUBLISH packet to be sent to the server.\n *\n * @param packet PUBLISH packet to send to the server\n * @returns a promise that will be rejected with an error or resolved with the PUBACK response (QoS 1), or\n * undefined (QoS 0)\n */\n async publish(packet: mqtt5_packet.PublishPacket) : Promise {\n return new Promise((resolve, reject) => {\n\n try {\n if (!this.browserClient) {\n reject(new Error(\"Client is stopped and cannot publish\"));\n return;\n }\n\n if (!packet) {\n reject(new Error(\"Invalid publish packet\"));\n return;\n }\n\n /*\n * Out topic aliasing contract and mqtt-js's don't quite match, so we do some fixup here.\n *\n * In our manual mode, the contract is that you must *always* submit both the topic and the alias.\n *\n * In Mqtt-js's manual mode, the alias will only be used if it's been previously bound and you don't\n * submit an alias in the publish (this is not reasonable behavior, but it's not under out control).\n * So when we're in manual aliasing mode, we track all the current bindings and strip out the alias\n * when there's a match, signaling to mqtt-js that the alias binding should be used.\n */\n if ((this.config.topicAliasingOptions?.outboundBehavior ?? OutboundTopicAliasBehaviorType.Default) == OutboundTopicAliasBehaviorType.Manual) {\n if (packet.topicAlias && this.lifecycleEventState == Mqtt5ClientLifecycleEventState.Connected) {\n if (this.is_topic_alias_bound(packet.topicAlias, packet.topicName)) {\n delete (packet.topicAlias);\n }\n\n this.bind_topic_alias(packet.topicAlias, packet.topicName);\n }\n } else {\n delete (packet.topicAlias);\n }\n\n let publishOptions : mqtt.IClientPublishOptions = mqtt_utils.transform_crt_publish_to_mqtt_js_publish_options(packet);\n let qos : mqtt5_packet.QoS = packet.qos;\n\n let payload = mqtt_shared.normalize_payload(packet.payload);\n this.browserClient.publish(packet.topicName, payload, publishOptions, (error, completionPacket) => {\n if (error) {\n reject(error);\n return;\n }\n\n switch (qos) {\n case mqtt5_packet.QoS.AtMostOnce:\n resolve(undefined);\n break;\n\n case mqtt5_packet.QoS.AtLeastOnce:\n if (!completionPacket) {\n reject(new Error(\"Invalid puback packet from mqtt-js\"));\n return;\n }\n\n /*\n * sadly, mqtt-js returns the original publish packet when the puback is a success, so we have\n * to create a fake puback instead. This means we won't reflect any reason string or\n * user properties that might have been present in the real puback.\n */\n if (completionPacket.cmd !== \"puback\") {\n resolve({\n type: mqtt5_packet.PacketType.Puback,\n reasonCode: mqtt5_packet.PubackReasonCode.Success\n })\n }\n\n const puback: mqtt5_packet.PubackPacket = mqtt_utils.transform_mqtt_js_puback_to_crt_puback(completionPacket as mqtt.IPubackPacket);\n resolve(puback);\n break;\n\n default:\n /* Technically, mqtt-js supports QoS 2 but we don't yet model it in the CRT types */\n reject(new Error(\"Unsupported QoS value\"));\n break;\n }\n });\n } catch (err) {\n reject(err);\n }\n });\n }\n\n /**\n * Event emitted when the client encounters a disruptive error condition. Not currently used.\n *\n * Listener type: {@link ErrorEventListener}\n *\n * @event\n */\n static ERROR : string = 'error';\n\n /**\n * Event emitted when the client encounters a transient error event that will not disrupt promises based on\n * lifecycle events. Currently, mqtt-js client error events are relayed to this event.\n *\n * Listener type: {@link ErrorEventListener}\n *\n * @event\n * @group Browser-only\n */\n static INFO : string = 'info';\n\n /**\n * Event emitted when an MQTT PUBLISH packet is received by the client.\n *\n * Listener type: {@link MessageReceivedEventListener}\n *\n * @event\n */\n static MESSAGE_RECEIVED : string = 'messageReceived';\n\n /**\n * Event emitted when the client begins a connection attempt.\n *\n * Listener type: {@link AttemptingConnectEventListener}\n *\n * @event\n */\n static ATTEMPTING_CONNECT : string = 'attemptingConnect';\n\n /**\n * Event emitted when the client successfully establishes an MQTT connection. Only emitted after\n * an {@link ATTEMPTING_CONNECT attemptingConnect} event.\n *\n * Listener type: {@link ConnectionSuccessEventListener}\n *\n * @event\n */\n static CONNECTION_SUCCESS : string = 'connectionSuccess';\n\n /**\n * Event emitted when the client fails to establish an MQTT connection. Only emitted after\n * an {@link ATTEMPTING_CONNECT attemptingConnect} event.\n *\n * Listener type: {@link ConnectionFailureEventListener}\n *\n * @event\n */\n static CONNECTION_FAILURE : string = 'connectionFailure';\n\n /**\n * Event emitted when the client's current connection is closed for any reason. Only emitted after\n * a {@link CONNECTION_SUCCESS connectionSuccess} event.\n *\n * Listener type: {@link DisconnectionEventListener}\n *\n * @event\n */\n static DISCONNECTION : string = 'disconnection';\n\n /**\n * Event emitted when the client finishes shutdown as a result of the user invoking {@link stop}.\n *\n * Listener type: {@link StoppedEventListener}\n *\n * @event\n */\n static STOPPED : string = 'stopped';\n\n /**\n * Registers a listener for the client's {@link ERROR error} event. An {@link ERROR error} event is emitted when\n * the client encounters a disruptive error condition.\n *\n * @param event the type of event to listen to\n * @param listener the event listener to add\n */\n on(event: 'error', listener: mqtt5.ErrorEventListener): this;\n\n /**\n * Registers a listener for the client's {@link INFO info} event. An {@link INFO info} event is emitted when\n * the client encounters a transient error event that will not disrupt promises based on lifecycle events.\n * Currently, mqtt-js client error events are relayed to this event.\n *\n * @param event the type of event to listen to\n * @param listener the event listener to add\n *\n * @group Browser-only\n */\n on(event: 'info', listener: mqtt5.ErrorEventListener): this;\n\n /**\n * Registers a listener for the client's {@link MESSAGE_RECEIVED messageReceived} event. A\n * {@link MESSAGE_RECEIVED messageReceived} event is emitted when an MQTT PUBLISH packet is received by the\n * client.\n *\n * @param event the type of event to listen to\n * @param listener the event listener to add\n */\n on(event: 'messageReceived', listener: mqtt5.MessageReceivedEventListener): this;\n\n /**\n * Registers a listener for the client's {@link ATTEMPTING_CONNECT attemptingConnect} event. A\n * {@link ATTEMPTING_CONNECT attemptingConnect} event is emitted every time the client begins a connection attempt.\n *\n * @param event the type of event to listen to\n * @param listener the event listener to add\n */\n on(event: 'attemptingConnect', listener: mqtt5.AttemptingConnectEventListener): this;\n\n /**\n * Registers a listener for the client's {@link CONNECTION_SUCCESS connectionSuccess} event. A\n * {@link CONNECTION_SUCCESS connectionSuccess} event is emitted every time the client successfully establishes\n * an MQTT connection.\n *\n * @param event the type of event to listen to\n * @param listener the event listener to add\n */\n on(event: 'connectionSuccess', listener: mqtt5.ConnectionSuccessEventListener): this;\n\n /**\n * Registers a listener for the client's {@link CONNECTION_FAILURE connectionFailure} event. A\n * {@link CONNECTION_FAILURE connectionFailure} event is emitted every time the client fails to establish an\n * MQTT connection.\n *\n * @param event the type of event to listen to\n * @param listener the event listener to add\n */\n on(event: 'connectionFailure', listener: mqtt5.ConnectionFailureEventListener): this;\n\n /**\n * Registers a listener for the client's {@link DISCONNECTION disconnection} event. A\n * {@link DISCONNECTION disconnection} event is emitted when the client's current MQTT connection is closed\n * for any reason.\n *\n * @param event the type of event to listen to\n * @param listener the event listener to add\n */\n on(event: 'disconnection', listener: mqtt5.DisconnectionEventListener): this;\n\n /**\n * Registers a listener for the client's {@link STOPPED stopped} event. A\n * {@link STOPPED stopped} event is emitted when the client finishes shutdown as a\n * result of the user invoking {@link stop}.\n *\n * @param event the type of event to listen to\n * @param listener the event listener to add\n */\n on(event: 'stopped', listener: mqtt5.StoppedEventListener): this;\n\n on(event: string | symbol, listener: (...args: any[]) => void): this {\n super.on(event, listener);\n return this;\n }\n\n private on_browser_disconnect_packet(packet: mqtt.IDisconnectPacket) {\n this.lastDisconnect = mqtt_utils.transform_mqtt_js_disconnect_to_crt_disconnect(packet);\n }\n\n private on_browser_close() {\n let lastDisconnect : mqtt5_packet.DisconnectPacket | undefined = this.lastDisconnect;\n let lastError : Error | undefined = this.lastError;\n\n if (this.lifecycleEventState == Mqtt5ClientLifecycleEventState.Connected) {\n this.lifecycleEventState = Mqtt5ClientLifecycleEventState.Disconnected;\n this.reconnectionScheduler?.onConnectionFailureOrDisconnection();\n\n let disconnectionEvent : mqtt5.DisconnectionEvent = {\n error: new CrtError(lastError?.toString() ?? \"disconnected\")\n }\n\n if (lastDisconnect !== undefined) {\n disconnectionEvent.disconnect = lastDisconnect;\n }\n\n setTimeout(() => {\n this.emit(Mqtt5Client.DISCONNECTION, disconnectionEvent);\n }, 0);\n } else if (this.lifecycleEventState == Mqtt5ClientLifecycleEventState.Connecting) {\n this.lifecycleEventState = Mqtt5ClientLifecycleEventState.Disconnected;\n this.reconnectionScheduler?.onConnectionFailureOrDisconnection();\n\n let connectionFailureEvent: mqtt5.ConnectionFailureEvent = {\n error: new CrtError(lastError?.toString() ?? \"connectionFailure\")\n };\n\n setTimeout(() => {\n this.emit(Mqtt5Client.CONNECTION_FAILURE, connectionFailureEvent);\n }, 0);\n }\n\n this.lastDisconnect = undefined;\n this.lastError = undefined;\n }\n\n private on_browser_client_error(error: Error) {\n this.lastError = error;\n setTimeout(() => {\n this.emit(Mqtt5Client.INFO, new CrtError(error));\n }, 0);\n }\n\n private on_attempting_connect () {\n this.lifecycleEventState = Mqtt5ClientLifecycleEventState.Connecting;\n\n let attemptingConnectEvent: mqtt5.AttemptingConnectEvent = {};\n\n setTimeout(() => {\n this.emit(Mqtt5Client.ATTEMPTING_CONNECT, attemptingConnectEvent);\n }, 0);\n }\n\n private on_connection_success (connack: mqtt.IConnackPacket) {\n this.lifecycleEventState = Mqtt5ClientLifecycleEventState.Connected;\n this.reset_topic_aliases();\n\n this.reconnectionScheduler?.onSuccessfulConnection();\n\n let crt_connack : mqtt5_packet.ConnackPacket = mqtt_utils.transform_mqtt_js_connack_to_crt_connack(connack);\n let settings : mqtt5.NegotiatedSettings = mqtt_utils.create_negotiated_settings(this.config, crt_connack);\n\n let connectionSuccessEvent: mqtt5.ConnectionSuccessEvent = {\n connack: crt_connack,\n settings: settings\n };\n\n setTimeout(() => {\n this.emit(Mqtt5Client.CONNECTION_SUCCESS, connectionSuccessEvent);\n }, 0);\n }\n\n private _on_stopped_internal() {\n this.reconnectionScheduler?.clearTasks();\n this.reconnectionScheduler = undefined;\n this.browserClient = undefined;\n this.lifecycleEventState = Mqtt5ClientLifecycleEventState.None;\n this.lastDisconnect = undefined;\n this.lastError = undefined;\n\n if (this.state == Mqtt5ClientState.Restarting) {\n this.state = Mqtt5ClientState.Stopped;\n this.start();\n } else if (this.state != Mqtt5ClientState.Stopped) {\n this.state = Mqtt5ClientState.Stopped;\n this.emit(Mqtt5Client.STOPPED);\n }\n }\n\n private on_message = (topic: string, payload: Buffer, packet: mqtt.IPublishPacket) => {\n let crtPublish : mqtt5_packet.PublishPacket = mqtt_utils.transform_mqtt_js_publish_to_crt_publish(packet);\n\n let messageReceivedEvent: mqtt5.MessageReceivedEvent = {\n message: crtPublish\n };\n\n setTimeout(() => {\n this.emit(Mqtt5Client.MESSAGE_RECEIVED, messageReceivedEvent);\n }, 0);\n }\n}","\n/**\n * @packageDocumentation\n * @module mqtt5\n */\n\nimport * as mqtt from \"mqtt\";\nimport * as mqtt_shared from \"../common/mqtt_shared\";\nimport * as mqtt5 from \"./mqtt5\";\nimport * as utils from \"../common/utils\";\nimport { CrtError } from \"./error\";\n\nexport const MAXIMUM_VARIABLE_LENGTH_INTEGER : number= 268435455;\nexport const MAXIMUM_PACKET_SIZE : number = 5 + MAXIMUM_VARIABLE_LENGTH_INTEGER;\nexport const DEFAULT_RECEIVE_MAXIMUM : number = 65535;\nexport const DEFAULT_CONNECT_TIMEOUT_MS : number = 30000;\nexport const DEFAULT_MIN_RECONNECT_DELAY_MS : number = 1000;\nexport const DEFAULT_MAX_RECONNECT_DELAY_MS : number = 120000;\nexport const DEFAULT_MIN_CONNECTED_TIME_TO_RESET_RECONNECT_DELAY_MS : number = 30000;\n\n/** @internal */\nexport function transform_mqtt_js_connack_to_crt_connack(mqtt_js_connack: mqtt.IConnackPacket) : mqtt5.ConnackPacket {\n if (mqtt_js_connack == null || mqtt_js_connack == undefined) {\n throw new CrtError(\"transform_mqtt_js_connack_to_crt_connack: mqtt_js_connack not defined\");\n }\n\n let connack : mqtt5.ConnackPacket = {\n type: mqtt5.PacketType.Connack,\n sessionPresent: mqtt_js_connack.sessionPresent,\n reasonCode : mqtt_js_connack.reasonCode ?? mqtt5.ConnectReasonCode.Success\n };\n\n utils.set_defined_property(connack, \"sessionExpiryInterval\", mqtt_js_connack.properties?.sessionExpiryInterval);\n utils.set_defined_property(connack, \"receiveMaximum\", mqtt_js_connack.properties?.receiveMaximum);\n utils.set_defined_property(connack, \"maximumQos\", mqtt_js_connack.properties?.maximumQoS);\n utils.set_defined_property(connack, \"retainAvailable\", mqtt_js_connack.properties?.retainAvailable);\n utils.set_defined_property(connack, \"maximumPacketSize\", mqtt_js_connack.properties?.maximumPacketSize);\n utils.set_defined_property(connack, \"assignedClientIdentifier\", mqtt_js_connack.properties?.assignedClientIdentifier);\n utils.set_defined_property(connack, \"topicAliasMaximum\", mqtt_js_connack.properties?.topicAliasMaximum);\n utils.set_defined_property(connack, \"reasonString\", mqtt_js_connack.properties?.reasonString);\n utils.set_defined_property(connack, \"userProperties\", transform_mqtt_js_user_properties_to_crt_user_properties(mqtt_js_connack.properties?.userProperties));\n utils.set_defined_property(connack, \"wildcardSubscriptionsAvailable\", mqtt_js_connack.properties?.wildcardSubscriptionAvailable);\n utils.set_defined_property(connack, \"subscriptionIdentifiersAvailable\", mqtt_js_connack.properties?.subscriptionIdentifiersAvailable);\n utils.set_defined_property(connack, \"sharedSubscriptionsAvailable\", mqtt_js_connack.properties?.sharedSubscriptionAvailable);\n utils.set_defined_property(connack, \"serverKeepAlive\", mqtt_js_connack.properties?.serverKeepAlive);\n utils.set_defined_property(connack, \"responseInformation\", mqtt_js_connack.properties?.responseInformation);\n utils.set_defined_property(connack, \"serverReference\", mqtt_js_connack.properties?.serverReference);\n\n return connack;\n}\n\n/** @internal */\nexport function create_negotiated_settings(config : mqtt5.Mqtt5ClientConfig, connack: mqtt5.ConnackPacket) : mqtt5.NegotiatedSettings {\n if (config == null || config == undefined) {\n throw new CrtError(\"create_negotiated_settings: config not defined\");\n }\n if (connack == null || connack == undefined) {\n throw new CrtError(\"create_negotiated_settings: connack not defined\");\n }\n\n return {\n maximumQos: Math.min(connack.maximumQos ?? mqtt5.QoS.ExactlyOnce, mqtt5.QoS.AtLeastOnce),\n sessionExpiryInterval: connack.sessionExpiryInterval ?? config.connectProperties?.sessionExpiryIntervalSeconds ?? 0,\n receiveMaximumFromServer: connack.receiveMaximum ?? DEFAULT_RECEIVE_MAXIMUM,\n maximumPacketSizeToServer: connack.maximumPacketSize ?? MAXIMUM_PACKET_SIZE,\n topicAliasMaximumToServer: Math.min(config.topicAliasingOptions?.outboundCacheMaxSize ?? 0, connack.topicAliasMaximum ?? 0),\n topicAliasMaximumToClient: config.topicAliasingOptions?.inboundCacheMaxSize ?? 0,\n serverKeepAlive: connack.serverKeepAlive ?? config.connectProperties?.keepAliveIntervalSeconds ?? mqtt_shared.DEFAULT_KEEP_ALIVE,\n retainAvailable: connack.retainAvailable ?? true,\n wildcardSubscriptionsAvailable: connack.wildcardSubscriptionsAvailable ?? true,\n subscriptionIdentifiersAvailable: connack.subscriptionIdentifiersAvailable ?? true,\n sharedSubscriptionsAvailable: connack.sharedSubscriptionsAvailable ?? true,\n rejoinedSession: connack.sessionPresent,\n clientId: connack.assignedClientIdentifier ?? config.connectProperties?.clientId ?? \"\"\n };\n}\n\n/** @internal */\nfunction create_mqtt_js_will_from_crt_config(connectProperties? : mqtt5.ConnectPacket) : any {\n if (!connectProperties || !connectProperties.will) {\n return undefined;\n }\n\n let crtWill : mqtt5.PublishPacket = connectProperties.will;\n\n let hasWillProperties : boolean = false;\n let willProperties : any = {};\n hasWillProperties = utils.set_defined_property(willProperties, \"willDelayInterval\", connectProperties.willDelayIntervalSeconds) || hasWillProperties;\n if (crtWill.payloadFormat !== undefined) {\n hasWillProperties = utils.set_defined_property(willProperties, \"payloadFormatIndicator\", crtWill.payloadFormat == mqtt5.PayloadFormatIndicator.Utf8) || hasWillProperties;\n }\n hasWillProperties = utils.set_defined_property(willProperties, \"messageExpiryInterval\", crtWill.messageExpiryIntervalSeconds) || hasWillProperties;\n hasWillProperties = utils.set_defined_property(willProperties, \"contentType\", crtWill.contentType) || hasWillProperties;\n hasWillProperties = utils.set_defined_property(willProperties, \"responseTopic\", crtWill.responseTopic) || hasWillProperties;\n hasWillProperties = utils.set_defined_property(willProperties, \"correlationData\", crtWill.correlationData) || hasWillProperties;\n hasWillProperties = utils.set_defined_property(willProperties, \"userProperties\", transform_crt_user_properties_to_mqtt_js_user_properties(crtWill.userProperties)) || hasWillProperties;\n\n let will : any = {\n topic: crtWill.topicName,\n payload: crtWill.payload ?? \"\",\n qos: crtWill.qos,\n retain: crtWill.retain ?? false\n };\n\n if (hasWillProperties) {\n will[\"properties\"] = willProperties;\n }\n\n return will;\n}\n\n/** @internal */\nexport function getOrderedReconnectDelayBounds(configMin?: number, configMax?: number) : [number, number] {\n const minDelay : number = Math.max(1, configMin ?? DEFAULT_MIN_RECONNECT_DELAY_MS);\n const maxDelay : number = Math.max(1, configMax ?? DEFAULT_MAX_RECONNECT_DELAY_MS);\n if (minDelay > maxDelay) {\n return [maxDelay, minDelay];\n } else {\n return [minDelay, maxDelay];\n }\n}\n\n/** @internal */\nfunction should_mqtt_js_use_clean_start(session_behavior? : mqtt5.ClientSessionBehavior) : boolean {\n return session_behavior !== mqtt5.ClientSessionBehavior.RejoinPostSuccess && session_behavior !== mqtt5.ClientSessionBehavior.RejoinAlways;\n}\n\n/** @internal */\nexport function compute_mqtt_js_reconnect_delay_from_crt_max_delay(maxReconnectDelayMs : number) : number {\n /*\n * This is an attempt to guarantee that the mqtt-js will never try to reconnect on its own and instead always\n * be controlled by our reconnection scheduler logic.\n */\n return maxReconnectDelayMs * 2 + 60000;\n}\n\nfunction validate_required_uint16(propertyName : string, value: number) {\n if (value < 0 || value > 65535) {\n throw new CrtError(`Invalid value for property ${propertyName}: ` + value);\n }\n}\n\nfunction validate_optional_uint16(propertyName : string, value?: number) {\n if (value !== undefined) {\n validate_required_uint16(propertyName, value);\n }\n}\n\nfunction validate_required_uint32(propertyName : string, value: number) {\n if (value < 0 || value >= 4294967296) {\n throw new CrtError(`Invalid value for property ${propertyName}: ` + value);\n }\n}\n\nfunction validate_optional_uint32(propertyName : string, value?: number) {\n if (value !== undefined) {\n validate_required_uint32(propertyName, value);\n }\n}\n\nfunction validate_required_nonnegative_uint32(propertyName : string, value: number) {\n if (value <= 0 || value >= 4294967296) {\n throw new CrtError(`Invalid value for property ${propertyName}: ` + value);\n }\n}\n\nfunction validate_optional_nonnegative_uint32(propertyName : string, value?: number) {\n if (value !== undefined) {\n validate_required_nonnegative_uint32(propertyName, value);\n }\n}\n\nfunction validate_mqtt5_client_config(crtConfig : mqtt5.Mqtt5ClientConfig) {\n if (crtConfig == null || crtConfig == undefined) {\n throw new CrtError(\"validate_mqtt5_client_config: crtConfig not defined\");\n }\n validate_required_uint16(\"keepAliveIntervalSeconds\", crtConfig.connectProperties?.keepAliveIntervalSeconds ?? 0);\n validate_optional_uint32(\"sessionExpiryIntervalSeconds\", crtConfig.connectProperties?.sessionExpiryIntervalSeconds);\n validate_optional_uint16(\"receiveMaximum\", crtConfig.connectProperties?.receiveMaximum);\n validate_optional_nonnegative_uint32(\"maximumPacketSizeBytes\", crtConfig.connectProperties?.maximumPacketSizeBytes);\n validate_optional_uint32(\"willDelayIntervalSeconds\", crtConfig.connectProperties?.willDelayIntervalSeconds);\n}\n\n/** @internal */\nexport function create_mqtt_js_client_config_from_crt_client_config(crtConfig : mqtt5.Mqtt5ClientConfig) : mqtt.IClientOptions {\n\n validate_mqtt5_client_config(crtConfig);\n\n let [_, maxDelay] = getOrderedReconnectDelayBounds(crtConfig.minReconnectDelayMs, crtConfig.maxReconnectDelayMs);\n\n maxDelay = compute_mqtt_js_reconnect_delay_from_crt_max_delay(maxDelay);\n\n let mqttJsClientConfig : mqtt.IClientOptions = {\n protocolVersion: 5,\n keepalive: crtConfig.connectProperties?.keepAliveIntervalSeconds ?? mqtt_shared.DEFAULT_KEEP_ALIVE,\n connectTimeout: crtConfig.connectTimeoutMs ?? DEFAULT_CONNECT_TIMEOUT_MS,\n clean: should_mqtt_js_use_clean_start(crtConfig.sessionBehavior),\n reconnectPeriod: maxDelay,\n // @ts-ignore\n autoUseTopicAlias : false,\n // @ts-ignore\n autoAssignTopicAlias : false,\n queueQoSZero : false,\n transformWsUrl: undefined, /* TODO */\n resubscribe : false\n };\n\n let topic_aliasing_options = crtConfig.topicAliasingOptions;\n if (topic_aliasing_options) {\n switch (topic_aliasing_options.outboundBehavior ?? mqtt5.OutboundTopicAliasBehaviorType.Default) {\n case mqtt5.OutboundTopicAliasBehaviorType.LRU:\n // @ts-ignore\n mqttJsClientConfig.autoUseTopicAlias = true;\n // @ts-ignore\n mqttJsClientConfig.autoAssignTopicAlias = true;\n break;\n\n case mqtt5.OutboundTopicAliasBehaviorType.Manual:\n // @ts-ignore\n mqttJsClientConfig.autoUseTopicAlias = true;\n break;\n\n default:\n break;\n }\n }\n\n /*\n * If you leave clientId undefined, mqtt-js will make up some weird thing for you, but the intent is that it\n * should pass the empty client id so that the server assigns you one.\n */\n utils.set_defined_property(mqttJsClientConfig, \"clientId\", crtConfig.connectProperties?.clientId ?? \"\");\n utils.set_defined_property(mqttJsClientConfig, \"username\", crtConfig.connectProperties?.username);\n utils.set_defined_property(mqttJsClientConfig, \"password\", crtConfig.connectProperties?.password);\n utils.set_defined_property(mqttJsClientConfig, \"will\", create_mqtt_js_will_from_crt_config(crtConfig.connectProperties));\n\n let hasProperties : boolean = false;\n let properties: any = {};\n hasProperties = utils.set_defined_property(properties, \"sessionExpiryInterval\", crtConfig.connectProperties?.sessionExpiryIntervalSeconds) || hasProperties;\n hasProperties = utils.set_defined_property(properties, \"receiveMaximum\", crtConfig.connectProperties?.receiveMaximum) || hasProperties;\n hasProperties = utils.set_defined_property(properties, \"maximumPacketSize\", crtConfig.connectProperties?.maximumPacketSizeBytes) || hasProperties;\n hasProperties = utils.set_defined_property(properties, \"requestResponseInformation\", crtConfig.connectProperties?.requestResponseInformation) || hasProperties;\n hasProperties = utils.set_defined_property(properties, \"requestProblemInformation\", crtConfig.connectProperties?.requestProblemInformation) || hasProperties;\n hasProperties = utils.set_defined_property(properties, \"userProperties\", transform_crt_user_properties_to_mqtt_js_user_properties(crtConfig.connectProperties?.userProperties)) || hasProperties;\n\n if (hasProperties) {\n mqttJsClientConfig[\"properties\"] = properties;\n }\n\n return mqttJsClientConfig;\n}\n\n/** @internal */\nexport function transform_crt_user_properties_to_mqtt_js_user_properties(userProperties?: mqtt5.UserProperty[]) : mqtt.UserProperties | undefined {\n if (!userProperties) {\n return undefined;\n }\n\n /*\n * More restricted version of mqtt.UserProperties so that we can have type-checking but don't need to handle\n * the non-array case.\n */\n let mqttJsProperties : {[key : string] : string[] } = {};\n\n for (const property of userProperties) {\n const key : string = property.name;\n if (!(key in mqttJsProperties)) {\n mqttJsProperties[key] = [];\n }\n mqttJsProperties[key].push(property.value);\n }\n\n return mqttJsProperties;\n}\n\n/** @internal */\nexport function transform_mqtt_js_user_properties_to_crt_user_properties(userProperties?: mqtt.UserProperties) : mqtt5.UserProperty[] | undefined {\n if (!userProperties) {\n return undefined;\n }\n\n let crtProperties : mqtt5.UserProperty[] | undefined = undefined;\n\n for (const [propName, propValue] of Object.entries(userProperties)) {\n\n let values : string[] = (typeof propValue === 'string') ? [propValue] : propValue;\n for (const valueIter of values) {\n let propertyEntry = {name : propName, value : valueIter};\n if (!crtProperties) {\n crtProperties = [propertyEntry];\n } else {\n crtProperties.push(propertyEntry);\n }\n }\n }\n\n return crtProperties;\n}\n\nfunction validate_crt_disconnect(disconnect: mqtt5.DisconnectPacket) {\n if (disconnect == null || disconnect == undefined) {\n throw new CrtError(\"validate_crt_disconnect: disconnect not defined\");\n }\n validate_optional_uint32(\"sessionExpiryIntervalSeconds\", disconnect.sessionExpiryIntervalSeconds);\n}\n\n/** @internal */\nexport function transform_crt_disconnect_to_mqtt_js_disconnect(disconnect: mqtt5.DisconnectPacket) : mqtt.IDisconnectPacket {\n\n validate_crt_disconnect(disconnect);\n\n let properties = {};\n let propertiesValid : boolean = false;\n\n propertiesValid = utils.set_defined_property(properties, \"sessionExpiryInterval\", disconnect.sessionExpiryIntervalSeconds) || propertiesValid;\n propertiesValid = utils.set_defined_property(properties, \"reasonString\", disconnect.reasonString) || propertiesValid;\n propertiesValid = utils.set_defined_property(properties, \"userProperties\", transform_crt_user_properties_to_mqtt_js_user_properties(disconnect.userProperties)) || propertiesValid;\n propertiesValid = utils.set_defined_property(properties, \"serverReference\", disconnect.serverReference) || propertiesValid;\n\n let mqttJsDisconnect : mqtt.IDisconnectPacket = {\n cmd: 'disconnect',\n reasonCode : disconnect.reasonCode\n };\n\n if (propertiesValid) {\n mqttJsDisconnect[\"properties\"] = properties;\n }\n\n return mqttJsDisconnect;\n}\n\n/** @internal **/\nexport function transform_mqtt_js_disconnect_to_crt_disconnect(disconnect: mqtt.IDisconnectPacket) : mqtt5.DisconnectPacket {\n\n if (disconnect == null || disconnect == undefined) {\n throw new CrtError(\"transform_mqtt_js_disconnect_to_crt_disconnect: disconnect not defined\");\n }\n\n let crtDisconnect : mqtt5.DisconnectPacket = {\n type: mqtt5.PacketType.Disconnect,\n reasonCode : disconnect.reasonCode ?? mqtt5.DisconnectReasonCode.NormalDisconnection\n };\n\n utils.set_defined_property(crtDisconnect, \"sessionExpiryIntervalSeconds\", disconnect.properties?.sessionExpiryInterval);\n utils.set_defined_property(crtDisconnect, \"reasonString\", disconnect.properties?.reasonString);\n utils.set_defined_property(crtDisconnect, \"userProperties\", transform_mqtt_js_user_properties_to_crt_user_properties(disconnect.properties?.userProperties));\n utils.set_defined_property(crtDisconnect, \"serverReference\", disconnect.properties?.serverReference);\n\n return crtDisconnect;\n}\n\nfunction validate_crt_subscribe(subscribe: mqtt5.SubscribePacket) {\n if (subscribe == null || subscribe == undefined) {\n throw new CrtError(\"validate_crt_subscribe: subscribe not defined\");\n }\n validate_optional_uint32(\"subscriptionIdentifier\", subscribe.subscriptionIdentifier);\n}\n\n/** @internal **/\nexport function transform_crt_subscribe_to_mqtt_js_subscription_map(subscribe: mqtt5.SubscribePacket) : mqtt.ISubscriptionMap {\n\n validate_crt_subscribe(subscribe);\n\n let subscriptionMap : mqtt.ISubscriptionMap = {};\n\n for (const subscription of subscribe.subscriptions) {\n let mqttJsSub = {\n qos: subscription.qos,\n nl : subscription.noLocal ?? false,\n rap: subscription.retainAsPublished ?? false,\n rh: subscription.retainHandlingType ?? mqtt5.RetainHandlingType.SendOnSubscribe\n };\n\n subscriptionMap[subscription.topicFilter] = mqttJsSub;\n }\n\n return subscriptionMap;\n}\n\n/** @internal **/\nexport function transform_crt_subscribe_to_mqtt_js_subscribe_options(subscribe: mqtt5.SubscribePacket) : mqtt.IClientSubscribeOptions {\n\n let properties = {};\n let propertiesValid : boolean = false;\n\n if (subscribe == null || subscribe == undefined) {\n throw new CrtError(\"transform_crt_subscribe_to_mqtt_js_subscribe_options: subscribe not defined\");\n }\n\n propertiesValid = utils.set_defined_property(properties, \"subscriptionIdentifier\", subscribe.subscriptionIdentifier) || propertiesValid;\n propertiesValid = utils.set_defined_property(properties, \"userProperties\", transform_crt_user_properties_to_mqtt_js_user_properties(subscribe.userProperties)) || propertiesValid;\n\n let options : mqtt.IClientSubscribeOptions = {\n qos: 0\n }\n\n if (propertiesValid) {\n options[\"properties\"] = properties;\n }\n\n return options;\n}\n\n/** @internal **/\nexport function transform_mqtt_js_subscription_grants_to_crt_suback(subscriptionsGranted: mqtt.ISubscriptionGrant[]) : mqtt5.SubackPacket {\n\n if (subscriptionsGranted == null || subscriptionsGranted == undefined) {\n throw new CrtError(\"transform_mqtt_js_subscription_grants_to_crt_suback: subscriptionsGranted not defined\");\n }\n\n let crtSuback : mqtt5.SubackPacket = {\n type: mqtt5.PacketType.Suback,\n reasonCodes : subscriptionsGranted.map((subscription: mqtt.ISubscriptionGrant, index: number, array : mqtt.ISubscriptionGrant[]) : mqtt5.SubackReasonCode => { return subscription.qos; })\n }\n\n /*\n * TODO: mqtt-js does not expose the suback packet to subscribe's completion callback, so we cannot extract\n * reasonString and userProperties atm.\n *\n * Revisit if this changes.\n */\n\n\n return crtSuback;\n}\n\nfunction validate_crt_publish(publish: mqtt5.PublishPacket) {\n if (publish == null || publish == undefined) {\n throw new CrtError(\"validate_crt_publish: publish not defined\");\n }\n validate_optional_uint32(\"messageExpiryIntervalSeconds\", publish.messageExpiryIntervalSeconds);\n}\n\n/** @internal */\nexport function transform_crt_publish_to_mqtt_js_publish_options(publish: mqtt5.PublishPacket) : mqtt.IClientPublishOptions {\n\n validate_crt_publish(publish);\n\n let properties = {};\n let propertiesValid : boolean = false;\n\n if (publish.payloadFormat !== undefined) {\n propertiesValid = utils.set_defined_property(properties, \"payloadFormatIndicator\", publish.payloadFormat == mqtt5.PayloadFormatIndicator.Utf8) || propertiesValid;\n }\n propertiesValid = utils.set_defined_property(properties, \"messageExpiryInterval\", publish.messageExpiryIntervalSeconds) || propertiesValid;\n propertiesValid = utils.set_defined_property(properties, \"responseTopic\", publish.responseTopic) || propertiesValid;\n propertiesValid = utils.set_defined_property(properties, \"correlationData\", publish.correlationData) || propertiesValid;\n propertiesValid = utils.set_defined_property(properties, \"userProperties\", transform_crt_user_properties_to_mqtt_js_user_properties(publish.userProperties)) || propertiesValid;\n propertiesValid = utils.set_defined_property(properties, \"contentType\", publish.contentType) || propertiesValid;\n propertiesValid = utils.set_defined_property(properties, \"topicAlias\", publish.topicAlias) || propertiesValid;\n\n let mqttJsPublish : mqtt.IClientPublishOptions = {\n qos: publish.qos,\n retain: publish.retain ?? false,\n };\n\n if (propertiesValid) {\n mqttJsPublish[\"properties\"] = properties;\n }\n\n return mqttJsPublish;\n}\n\n/** @internal **/\nexport function transform_mqtt_js_publish_to_crt_publish(publish: mqtt.IPublishPacket) : mqtt5.PublishPacket {\n\n if (publish == null || publish == undefined) {\n throw new CrtError(\"transform_mqtt_js_publish_to_crt_publish: publish not defined\");\n }\n\n let crtPublish : mqtt5.PublishPacket = {\n type: mqtt5.PacketType.Publish,\n qos: publish.qos,\n retain: publish.retain,\n topicName: publish.topic,\n payload: publish.payload\n };\n\n if (publish.properties) {\n if (publish.properties.payloadFormatIndicator !== undefined) {\n utils.set_defined_property(crtPublish, \"payloadFormat\", publish.properties.payloadFormatIndicator ? mqtt5.PayloadFormatIndicator.Utf8 : mqtt5.PayloadFormatIndicator.Bytes);\n }\n utils.set_defined_property(crtPublish, \"messageExpiryIntervalSeconds\", publish.properties?.messageExpiryInterval);\n utils.set_defined_property(crtPublish, \"responseTopic\", publish.properties?.responseTopic);\n utils.set_defined_property(crtPublish, \"correlationData\", publish.properties?.correlationData);\n utils.set_defined_property(crtPublish, \"userProperties\", transform_mqtt_js_user_properties_to_crt_user_properties(publish.properties?.userProperties));\n utils.set_defined_property(crtPublish, \"contentType\", publish.properties?.contentType);\n\n let subIds : number | number[] | undefined = publish.properties?.subscriptionIdentifier;\n let subIdsType : string = typeof subIds;\n if (subIds) {\n if (subIdsType == 'number') {\n crtPublish[\"subscriptionIdentifiers\"] = [subIds];\n } else if (Array.isArray(subIds)) {\n crtPublish[\"subscriptionIdentifiers\"] = subIds;\n }\n }\n }\n\n return crtPublish;\n}\n\n/** @internal **/\nexport function transform_mqtt_js_puback_to_crt_puback(puback: mqtt.IPubackPacket) : mqtt5.PubackPacket {\n\n if (puback == null || puback == undefined) {\n throw new CrtError(\"transform_mqtt_js_puback_to_crt_puback: puback not defined\");\n }\n\n let crtPuback : mqtt5.PubackPacket = {\n type: mqtt5.PacketType.Puback,\n reasonCode: puback.reasonCode ?? mqtt5.PubackReasonCode.Success,\n };\n\n if (puback.properties) {\n utils.set_defined_property(crtPuback, \"reasonString\", puback.properties?.reasonString);\n utils.set_defined_property(crtPuback, \"userProperties\", transform_mqtt_js_user_properties_to_crt_user_properties(puback.properties?.userProperties));\n }\n\n return crtPuback;\n}\n\n/** @internal **/\nexport function transform_crt_unsubscribe_to_mqtt_js_unsubscribe_options(unsubscribe: mqtt5.UnsubscribePacket) : Object {\n\n if (unsubscribe == null || unsubscribe == undefined) {\n throw new CrtError(\"transform_crt_unsubscribe_to_mqtt_js_unsubscribe_options: unsubscribe not defined\");\n }\n\n let properties = {};\n let propertiesValid : boolean = false;\n\n propertiesValid = utils.set_defined_property(properties, \"userProperties\", transform_crt_user_properties_to_mqtt_js_user_properties(unsubscribe.userProperties));\n\n let options : any = {};\n\n if (propertiesValid) {\n options[\"properties\"] = properties;\n }\n\n return options;\n}\n\n/** @internal **/\nexport function transform_mqtt_js_unsuback_to_crt_unsuback(packet: mqtt.IUnsubackPacket) : mqtt5.UnsubackPacket {\n\n if (packet == null || packet == undefined) {\n throw new CrtError(\"transform_mqtt_js_unsuback_to_crt_unsuback: packet not defined\");\n }\n\n let reasonCodes : number | number[] | undefined = packet.reasonCode;\n\n let codes : number[];\n if (Array.isArray(reasonCodes)) {\n codes = reasonCodes;\n } else if (typeof reasonCodes == 'number') {\n codes = [reasonCodes];\n } else {\n codes = [];\n }\n\n let crtUnsuback : mqtt5.UnsubackPacket = {\n type: mqtt5.PacketType.Unsuback,\n reasonCodes : codes\n }\n\n if (packet.properties) {\n utils.set_defined_property(crtUnsuback, \"reasonString\", packet.properties?.reasonString);\n utils.set_defined_property(crtUnsuback, \"userProperties\", transform_mqtt_js_user_properties_to_crt_user_properties(packet.properties?.userProperties));\n }\n\n return crtUnsuback;\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\nimport buffer from 'buffer';\nimport process from 'process';\n\n// Workaround to get mqtt-js working with Webpack 5\nif (window) {\n (window as any).Buffer = buffer.Buffer;\n (window as any).process = process;\n // NodeJS global shim workaround for Angular\n (window as any).global = window;\n}\n\nexport {};\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/** @internal */\nexport class Node {\n constructor(\n public key?: string,\n public value?: T,\n public children: Map> = new Map>()) {\n }\n}\n\n/** @internal */\nexport type KeySplitter = (key: string) => string[];\n/** @internal */\nexport enum TrieOp {\n Insert,\n Delete,\n Find,\n};\n\n/** @internal */\nexport class Trie {\n protected root = new Node();\n protected split_key: KeySplitter;\n\n constructor(split: KeySplitter | string) {\n if (typeof (split) === 'string') {\n const delimeter = split;\n split = (key: string) => {\n return key.split(delimeter);\n }\n }\n this.split_key = split;\n }\n\n protected find_node(key: string, op: TrieOp) {\n const parts = this.split_key(key);\n let current = this.root;\n let parent = undefined;\n for (const part of parts) {\n let child = current.children.get(part);\n if (!child) {\n if (op == TrieOp.Insert) {\n current.children.set(part, child = new Node(part));\n }\n else {\n return undefined;\n }\n }\n parent = current;\n current = child;\n }\n if (parent && op == TrieOp.Delete) {\n parent.children.delete(current.key!);\n }\n return current;\n }\n\n insert(key: string, value: T) {\n let node = this.find_node(key, TrieOp.Insert);\n node!.value = value;\n }\n\n remove(key: string) {\n this.find_node(key, TrieOp.Delete);\n }\n\n find(key: string) {\n const node = this.find_node(key, TrieOp.Find);\n return node ? node.value : undefined;\n }\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * Module for utilities related to websocket connection establishment\n *\n * @packageDocumentation\n * @module ws\n * @mergeTarget\n */\n\nimport { MqttConnectionConfig } from \"./mqtt\";\nimport * as mqtt5 from \"./mqtt5\";\nimport { AWSCredentials, AwsSigningConfig} from \"./auth\";\nimport { WebsocketOptionsBase } from \"../common/auth\";\nimport { CrtError } from \"./error\";\nvar websocket = require('@httptoolkit/websocket-stream')\nimport * as Crypto from \"crypto-js\";\nimport * as iot_shared from \"../common/aws_iot_shared\";\n\n/**\n * Options for websocket based connections in browser\n *\n * @category MQTT\n */\nexport interface WebsocketOptions extends WebsocketOptionsBase {\n /** Additional headers to add */\n headers?: { [index: string]: string };\n /** Websocket protocol, used during Upgrade */\n protocol?: string;\n}\n\n/** @internal */\nfunction zero_pad(n: number) {\n return (n > 9) ? n : '0' + n.toString();\n}\n\n/** @internal */\nfunction canonical_time(time?: Date) {\n const now = time?? new Date();\n return `${now.getUTCFullYear()}${zero_pad(now.getUTCMonth() + 1)}${zero_pad(now.getUTCDate())}T` +\n `${zero_pad(now.getUTCHours())}${zero_pad(now.getUTCMinutes())}${zero_pad(now.getUTCSeconds())}Z`;\n}\n\n/** @internal */\nfunction canonical_day(time: string = canonical_time()) {\n return time.substring(0, time.indexOf('T'));\n}\n\n/** @internal */\nfunction make_signing_key(credentials: AWSCredentials, day: string, service_name: string) {\n if (credentials == null || credentials == undefined) {\n throw new CrtError(\"make_signing_key: credentials not defined\");\n }\n const hash_opts = { asBytes: true };\n let hash = Crypto.HmacSHA256(day, 'AWS4' + credentials.aws_secret_key, hash_opts);\n hash = Crypto.HmacSHA256(credentials.aws_region || '', hash, hash_opts);\n hash = Crypto.HmacSHA256(service_name, hash, hash_opts);\n hash = Crypto.HmacSHA256('aws4_request', hash, hash_opts);\n return hash;\n}\n\n/** @internal */\nfunction sign_url(method: string,\n url: URL,\n signing_config: AwsSigningConfig,\n time: string = canonical_time(),\n day: string = canonical_day(time),\n payload: string = '') {\n\n if (signing_config == null || signing_config == undefined) {\n throw new CrtError(\"sign_url: signing_config not defined\");\n }\n\n // region should not have been put in credentials, but we have to live with it\n let region: string = signing_config.credentials.aws_region ?? signing_config.region;\n\n const signed_headers = 'host';\n const service = signing_config.service!;\n const canonical_headers = `host:${url.hostname.toLowerCase()}\\n`;\n const payload_hash = Crypto.SHA256(payload, { asBytes: true });\n const canonical_params = url.search.replace(new RegExp('^\\\\?'), '');\n const canonical_request = `${method}\\n${url.pathname}\\n${canonical_params}\\n${canonical_headers}\\n${signed_headers}\\n${payload_hash}`;\n const canonical_request_hash = Crypto.SHA256(canonical_request, { asBytes: true });\n const signature_raw = `AWS4-HMAC-SHA256\\n${time}\\n${day}/${region}/${service}/aws4_request\\n${canonical_request_hash}`;\n const signing_key = make_signing_key(signing_config.credentials, day, service);\n const signature = Crypto.HmacSHA256(signature_raw, signing_key, { asBytes: true });\n let query_params = `${url.search}&X-Amz-Signature=${signature}`;\n if (signing_config.credentials.aws_sts_token) {\n query_params += `&X-Amz-Security-Token=${encodeURIComponent(signing_config.credentials.aws_sts_token)}`;\n }\n const signed_url = `${url.protocol}//${url.hostname}${url.pathname}${query_params}`;\n return signed_url;\n}\n\n/** @internal */\nexport function create_websocket_url(config: MqttConnectionConfig) {\n if (config == null || config == undefined) {\n throw new CrtError(\"create_websocket_url: config not defined\");\n }\n const path = '/mqtt';\n const protocol = (config.websocket || {}).protocol || 'wss';\n if (protocol === 'wss') {\n const websocketoptions = config.websocket!;\n const credentials = config.credentials_provider?.getCredentials();\n const signing_config_value = websocketoptions.create_signing_config?.()\n ?? {\n service: websocketoptions.service ?? \"iotdevicegateway\",\n credentials: credentials,\n date: new Date()\n };\n const signing_config = signing_config_value as AwsSigningConfig;\n const time = canonical_time(signing_config.date);\n const day = canonical_day(time);\n const query_params = `X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=${signing_config.credentials.aws_access_id}` +\n `%2F${day}%2F${signing_config.credentials.aws_region}%2F${signing_config.service}%2Faws4_request&X-Amz-Date=${time}&X-Amz-SignedHeaders=host`;\n const url = new URL(`wss://${config.host_name}:${config.port}${path}?${query_params}`);\n return sign_url('GET', url, signing_config, time, day);\n }\n else if (protocol === 'wss-custom-auth') {\n return `wss://${config.host_name}:${config.port}${path}`;\n }\n throw new URIError(`Invalid protocol requested: ${protocol}`);\n}\n\n/** @internal */\nexport function create_websocket_stream(config: MqttConnectionConfig) {\n const url = create_websocket_url(config);\n return websocket(url, ['mqttv3.1'], config.websocket);\n}\n\n\n/** @internal */\nexport function create_mqtt5_websocket_url(config: mqtt5.Mqtt5ClientConfig) {\n if (config == null || config == undefined) {\n throw new CrtError(\"create_mqtt5_websocket_url: config not defined\");\n }\n const path = '/mqtt';\n const websocketConfig : mqtt5.Mqtt5WebsocketConfig = config.websocketOptions ?? { urlFactoryOptions: { urlFactory: mqtt5.Mqtt5WebsocketUrlFactoryType.Ws} };\n const urlFactory : mqtt5.Mqtt5WebsocketUrlFactoryType = websocketConfig.urlFactoryOptions.urlFactory;\n\n switch(urlFactory) {\n case mqtt5.Mqtt5WebsocketUrlFactoryType.Ws:\n return `ws://${config.hostName}:${config.port}${path}`;\n break;\n\n case mqtt5.Mqtt5WebsocketUrlFactoryType.Wss:\n return `wss://${config.hostName}:${config.port}${path}`;\n break;\n\n case mqtt5.Mqtt5WebsocketUrlFactoryType.Sigv4:\n const sigv4Options : mqtt5.Mqtt5WebsocketUrlFactorySigv4Options = websocketConfig.urlFactoryOptions as mqtt5.Mqtt5WebsocketUrlFactorySigv4Options;\n const credentials = sigv4Options.credentialsProvider.getCredentials();\n if (credentials === undefined) {\n throw new CrtError(\"Websockets with sigv4 requires valid AWS credentials\");\n }\n\n let region : string = sigv4Options.region ?? iot_shared.extractRegionFromEndpoint(config.hostName);\n\n const signingConfig : AwsSigningConfig = {\n service: \"iotdevicegateway\",\n region: region,\n credentials: credentials,\n date: new Date()\n };\n\n const time = canonical_time(signingConfig.date);\n const day = canonical_day(time);\n const query_params = `X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=${signingConfig.credentials.aws_access_id}` +\n `%2F${day}%2F${region}%2F${signingConfig.service}%2Faws4_request&X-Amz-Date=${time}&X-Amz-SignedHeaders=host`;\n const url = new URL(`wss://${config.hostName}:${config.port}${path}?${query_params}`);\n return sign_url('GET', url, signingConfig, time, day);\n\n case mqtt5.Mqtt5WebsocketUrlFactoryType.Custom:\n const customOptions : mqtt5.Mqtt5WebsocketUrlFactoryCustomOptions = websocketConfig.urlFactoryOptions as mqtt5.Mqtt5WebsocketUrlFactoryCustomOptions;\n return customOptions.customUrlFactory();\n }\n\n throw new URIError(`Invalid url factory requested: ${urlFactory}`);\n}\n\n/** @internal */\nexport function create_mqtt5_websocket_stream(config: mqtt5.Mqtt5ClientConfig) {\n const url = create_mqtt5_websocket_url(config);\n let ws = websocket(url, ['mqtt'], config.websocketOptions?.wsOptions);\n\n return ws;\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing miscellaneous functionality that is shared across both native and browser for aws_iot\n *\n * @packageDocumentation\n * @module aws_iot\n */\n\n\nimport * as platform from \"./platform\";\nimport * as mqtt5_packet from \"./mqtt5_packet\";\nimport * as utils from \"./utils\";\n\n/**\n * A helper function to add parameters to the username in with_custom_authorizer function\n *\n * @internal\n */\n export function add_to_username_parameter(current_username : string, parameter_value : string, parameter_pre_text : string) {\n let return_string = current_username;\n\n if (return_string.indexOf(\"?\") != -1) {\n return_string += \"&\"\n } else {\n return_string += \"?\"\n }\n\n if (parameter_value.indexOf(parameter_pre_text) != -1) {\n return return_string + parameter_value;\n } else {\n return return_string + parameter_pre_text + parameter_value;\n }\n}\n\n/**\n * A helper function to see if a string is not null, is defined, and is not an empty string\n *\n * @internal\n */\n export function is_string_and_not_empty(item : any) {\n return item != undefined && typeof(item) == 'string' && item != \"\";\n}\n\n/**\n * A helper function to populate the username with the Custom Authorizer fields\n * @param current_username the current username\n * @param input_username the username to add - can be an empty string to skip\n * @param input_authorizer the name of the authorizer to add - can be an empty string to skip\n * @param input_signature the name of the signature to add - can be an empty string to skip\n * @param input_builder_username the username from the MQTT builder\n * @param input_token_key_name the token key name\n * @param input_token_value the token key value\n * @returns The finished username with the additions added to it\n *\n * @internal\n */\nexport function populate_username_string_with_custom_authorizer(\n current_username? : string, input_username? : string, input_authorizer? : string,\n input_signature? : string, input_builder_username? : string,\n input_token_key_name? : string, input_token_value? : string) {\n\n let username_string = \"\";\n\n if (current_username) {\n username_string += current_username;\n }\n if (is_string_and_not_empty(input_username) == false) {\n if (is_string_and_not_empty(input_builder_username) && input_builder_username) {\n username_string += input_builder_username;\n }\n }\n else {\n username_string += input_username;\n }\n\n if (is_string_and_not_empty(input_authorizer) && input_authorizer) {\n username_string = add_to_username_parameter(username_string, input_authorizer, \"x-amz-customauthorizer-name=\");\n }\n\n if (is_string_and_not_empty(input_signature) || is_string_and_not_empty(input_token_value) || is_string_and_not_empty(input_token_key_name)) {\n if (!input_token_value || !input_token_key_name || !input_signature) {\n throw new Error(\"Signing-based custom authentication requires all token-related properties to be set\");\n }\n }\n\n if (is_string_and_not_empty(input_signature) && input_signature) {\n username_string = add_to_username_parameter(username_string, input_signature, \"x-amz-customauthorizer-signature=\");\n }\n\n if (is_string_and_not_empty(input_token_value) && is_string_and_not_empty(input_token_key_name)) {\n // @ts-ignore\n username_string = add_to_username_parameter(username_string, input_token_value, input_token_key_name + \"=\");\n }\n\n return username_string;\n}\n\n/**\n * Configuration options specific to\n * [AWS IoT Core custom authentication](https://docs.aws.amazon.com/iot/latest/developerguide/custom-authentication.html)\n * features. For clients constructed by an {@link AwsIotMqtt5ClientConfigBuilder}, all parameters associated\n * with AWS IoT custom authentication are passed via the username and password properties in the CONNECT packet.\n */\nexport interface MqttConnectCustomAuthConfig {\n\n /**\n * Name of the custom authorizer to use.\n *\n * Required if the endpoint does not have a default custom authorizer associated with it. It is strongly suggested\n * to URL-encode this value; the SDK will not do so for you.\n */\n authorizerName?: string;\n\n /**\n * The username to use with the custom authorizer. Query-string elements of this property value will be unioned\n * with the query-string elements implied by other properties in this object.\n *\n * For example, if you set this to:\n *\n * 'MyUsername?someKey=someValue'\n *\n * and use {@link authorizerName} to specify the authorizer, the final username would look like:\n *\n * `MyUsername?someKey=someValue&x-amz-customauthorizer-name=&...`\n */\n username?: string;\n\n /**\n * The password to use with the custom authorizer. Becomes the MQTT5 CONNECT packet's password property.\n * AWS IoT Core will base64 encode this binary data before passing it to the authorizer's lambda function.\n */\n password?: mqtt5_packet.BinaryData;\n\n /**\n * Key used to extract the custom authorizer token from MQTT username query-string properties.\n *\n * Required if the custom authorizer has signing enabled. It is strongly suggested to URL-encode this value; the\n * SDK will not do so for you.\n */\n tokenKeyName?: string;\n\n /**\n * An opaque token value. This value must be signed by the private key associated with the custom authorizer and\n * the result placed in the {@link tokenSignature} property.\n *\n * Required if the custom authorizer has signing enabled.\n */\n tokenValue?: string;\n\n /**\n * The digital signature of the token value in the {@link tokenValue} property. The signature must be based on\n * the private key associated with the custom authorizer. The signature must be base64 encoded.\n *\n * Required if the custom authorizer has signing enabled.\n */\n tokenSignature?: string;\n};\n\n/** @internal */\nexport function canonicalizeCustomAuthTokenSignature(signature?: string) : string | undefined {\n if (signature === undefined || signature == null) {\n return undefined;\n }\n\n let hasPercent = signature.indexOf(\"%\") != -1;\n if (hasPercent) {\n return signature;\n } else {\n return encodeURIComponent(signature);\n }\n}\n\n/** @internal */\nexport function canonicalizeCustomAuthConfig(config: MqttConnectCustomAuthConfig) : MqttConnectCustomAuthConfig {\n let processedConfig : MqttConnectCustomAuthConfig = {};\n\n utils.set_defined_property(processedConfig, \"authorizerName\", config.authorizerName);\n utils.set_defined_property(processedConfig, \"username\", config.username);\n utils.set_defined_property(processedConfig, \"password\", config.password);\n utils.set_defined_property(processedConfig, \"tokenKeyName\", config.tokenKeyName);\n utils.set_defined_property(processedConfig, \"tokenValue\", config.tokenValue);\n utils.set_defined_property(processedConfig, \"tokenSignature\", canonicalizeCustomAuthTokenSignature(config.tokenSignature));\n\n return processedConfig;\n}\n\n/** @internal */\nfunction addParam(paramName: string, paramValue: string | undefined, paramSet: [string, string][]) : void {\n if (paramValue) {\n paramSet.push([paramName, paramValue]);\n }\n}\n\n/**\n * Builds the final value for the CONNECT packet's username property based on AWS IoT custom auth configuration\n * and SDK metrics properties.\n *\n * @param customAuthConfig intended AWS IoT custom auth client configuration\n *\n * @internal\n */\nexport function buildMqtt5FinalUsername(customAuthConfig?: MqttConnectCustomAuthConfig) : string {\n\n let path : string = \"\";\n let paramList : [string, string][] = [];\n\n if (customAuthConfig) {\n /* If we're using token-signing authentication, then all token properties must be set */\n let usingSigning : boolean = false;\n if (customAuthConfig.tokenValue || customAuthConfig.tokenKeyName || customAuthConfig.tokenSignature) {\n usingSigning = true;\n if (!customAuthConfig.tokenValue || !customAuthConfig.tokenKeyName || !customAuthConfig.tokenSignature) {\n throw new Error(\"Token-based custom authentication requires all token-related properties to be set\");\n }\n }\n\n let username : string | undefined = customAuthConfig.username;\n let pathSplit : string[] = (username ?? \"\").split(\"?\");\n let params : string[] = pathSplit.slice(1);\n path = pathSplit[0];\n\n if (params.length > 1) {\n throw new Error(\"Custom auth username property value is invalid\");\n } else if (params.length == 1) {\n params[0].split(\"&\").forEach((keyValue, index, array) => {\n let kvPair = keyValue.split(\"=\");\n paramList.push([kvPair[0], kvPair[1] ?? \"\"]);\n });\n }\n\n addParam(\"x-amz-customauthorizer-name\", customAuthConfig.authorizerName, paramList);\n if (usingSigning) {\n // @ts-ignore verified earlier\n addParam(customAuthConfig.tokenKeyName, customAuthConfig.tokenValue, paramList);\n addParam(\"x-amz-customauthorizer-signature\", customAuthConfig.tokenSignature, paramList);\n }\n }\n\n paramList.push([\"SDK\", \"NodeJSv2\"]);\n paramList.push([\"Version\", platform.crt_version()]);\n\n return (path ?? \"\") + \"?\" + paramList.map((value : [string, string]) => `${value[0]}=${value[1]}`).join(\"&\");\n}\n\n/**\n * Attempts to determine the AWS region associated with an endpoint.\n *\n * @param endpoint endpoint to compute the region for\n *\n * @internal\n */\nexport function extractRegionFromEndpoint(endpoint: string) : string {\n const regexpRegion = /^[\\w\\-]+\\.[\\w\\-]+\\.([\\w+\\-]+)\\./;\n const match = endpoint.match(regexpRegion);\n if (match) {\n return match[1];\n }\n\n throw new Error(\"AWS region could not be extracted from endpoint. Use 'region' property on WebsocketConfig to set manually.\");\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing support for cancelling asynchronous operations\n *\n * @packageDocumentation\n * @module cancel\n */\n\n\nimport {EventEmitter} from \"events\";\nimport * as promise from \"./promise\";\n\n/**\n * Callback signature for when cancel() has been invoked on a CancelController\n */\nexport type CancelListener = () => void;\n\n/**\n * Abstract interface for an object capable of cancelling asynchronous operations.\n *\n * Modern browsers and Node 15+ include an AbortController which essentially does the same thing. But our baseline\n * is still node 10, so we provide our own implementation. Also, Abort is, unfortunately, a problematic term, so we\n * stick to Cancel.\n */\nexport interface ICancelController {\n\n /**\n * API to invoke to cancel all asynchronous operations connected to this controller\n */\n cancel() : void;\n\n /**\n * Checks whether or not the controller is in the cancelled state\n */\n hasBeenCancelled() : boolean;\n\n /**\n * Registers a callback to be notified when cancel() is invoked externally. In general, the callback\n * will cancel an asynchronous operation by rejecting the associated promise.\n *\n * IMPORTANT: The listener is invoked synchronously if the controller has already been cancelled.\n *\n * @param listener - function to invoke on cancel; invoked synchronously if the controller has already been\n * cancelled\n *\n * @return undefined if the controller has already been cancelled, otherwise a function object whose invocation\n * will remove the listener from the controller's event emitter.\n *\n */\n addListener(listener: CancelListener) : promise.PromiseCleanupFunctor | undefined;\n\n}\n\nexport const EVENT_NAME = 'cancelled';\n\n/**\n * Signature for a factory function that can create EventEmitter objects\n */\nexport type EventEmitterFactory = () => EventEmitter;\n\n/**\n * Configuration options for the CRT implementation of ICancelController\n */\nexport interface CancelControllerOptions {\n\n /**\n * Event emitters have, by default, a small maximum number of listeners. When that default is insufficient for\n * a use case, this factory option allows for customization of how the internal event emitter is created.\n */\n emitterFactory? : EventEmitterFactory;\n}\n\n/**\n * CRT implementation of the ICancelController interface\n */\nexport class CancelController implements ICancelController {\n\n private cancelled : boolean;\n private emitter : EventEmitter;\n\n public constructor(options?: CancelControllerOptions) {\n this.cancelled = false;\n\n if (options && options.emitterFactory) {\n this.emitter = options.emitterFactory();\n } else {\n this.emitter = new EventEmitter();\n }\n }\n\n /**\n * Cancels all asynchronous operations associated with this controller\n */\n public cancel() {\n if (!this.cancelled) {\n this.cancelled = true;\n this.emitter.emit(EVENT_NAME);\n this.emitter.removeAllListeners(EVENT_NAME);\n }\n }\n\n /**\n * Checks whether or not the controller is in the cancelled state\n */\n public hasBeenCancelled() {\n return this.cancelled;\n }\n\n /**\n * Registers a callback to be notified when cancel() is invoked externally. In general, the callback\n * will cancel an asynchronous operation by rejecting the associated promise.\n *\n * IMPORTANT: The listener is invoked synchronously if the controller has already been cancelled.\n *\n * @param listener - function to invoke on cancel; invoked synchronously if the controller has been cancelled\n *\n * @return undefined if the controller has already been cancelled, otherwise a function object whose invocation\n * will remove the listener from the controller's event emitter.\n *\n */\n public addListener(listener: CancelListener) : promise.PromiseCleanupFunctor | undefined {\n if (this.cancelled) {\n listener();\n return undefined;\n }\n\n this.emitter.on(EVENT_NAME, listener);\n\n return () => { this.emitter.removeListener(EVENT_NAME, listener); };\n }\n\n}\n\n/**\n * Configuration options for creating a promise that can be rejected by cancellation and resolved by the receipt\n * of an event from an EventEmitter.\n */\nexport interface CancellableNextEventPromiseOptions {\n\n /**\n * Optional cancel controller that can cancel the created promise\n */\n cancelController? : ICancelController;\n\n /**\n * Event emitter to listen to for potential promise completion\n */\n emitter : EventEmitter;\n\n /**\n * Name of the event to listen on for potential promise completion\n */\n eventName : string;\n\n /**\n * Optional transformation function for the event payload\n */\n eventDataTransformer? : (eventData : any) => ResultType;\n\n /**\n * Message to reject the promise with if cancellation is invoked\n */\n cancelMessage? : string;\n}\n\n/**\n * Creates a promise that can be rejected by a CancelController and resolved by the receipt of an event from an\n * EventEmitter.\n *\n * @param config promise creation options\n */\nexport function newCancellablePromiseFromNextEvent(config: CancellableNextEventPromiseOptions) : Promise {\n let onEvent : ((eventData : any) => void) | undefined = undefined;\n let cancelRemoveListener : promise.PromiseCleanupFunctor | undefined = undefined;\n\n let liftedPromise : promise.LiftedPromise = promise.newLiftedPromise();\n\n onEvent = (eventData : any) => {\n try {\n if (config.eventDataTransformer) {\n liftedPromise.resolve(config.eventDataTransformer(eventData));\n } else {\n liftedPromise.resolve(eventData as ResultType);\n }\n } catch (err) {\n liftedPromise.reject(err);\n }\n }\n\n config.emitter.addListener(config.eventName, onEvent);\n\n if (config.cancelController) {\n cancelRemoveListener = config.cancelController.addListener(() => {\n liftedPromise.reject(config.cancelMessage);\n });\n }\n\n return promise.makeSelfCleaningPromise(liftedPromise.promise, () => {\n if (onEvent) {\n config.emitter.removeListener(config.eventName, onEvent);\n }\n\n if (cancelRemoveListener) {\n cancelRemoveListener();\n }\n });\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * Module for base types related to event emission\n *\n * @packageDocumentation\n * @module event\n */\n\nimport { EventEmitter } from 'events';\n\n/**\n * Events are named via string or symbol\n *\n * @category Events\n */\nexport type EventKey = string | symbol;\n\n/**\n * @internal\n */\nclass BufferedEvent {\n public next?: BufferedEvent;\n public args: any[];\n constructor(public event: EventKey, args: any[]) {\n this.args = args;\n }\n}\n\n/**\n * Provides buffered event emitting semantics, similar to many Node-style streams.\n * Subclasses will override EventEmitter.on() and trigger uncorking.\n * NOTE: It is HIGHLY recommended that uncorking should always be done via\n * ```process.nextTick()```, not during the EventEmitter.on() call.\n *\n * See also: [Node writable streams](https://nodejs.org/api/stream.html#stream_writable_cork)\n *\n * @category Events\n */\nexport class BufferedEventEmitter extends EventEmitter {\n private corked = false;\n private eventQueue?: BufferedEvent;\n private lastQueuedEvent?: BufferedEvent;\n\n constructor() {\n super();\n }\n\n /**\n * Forces all written events to be buffered in memory. The buffered data will be\n * flushed when {@link BufferedEventEmitter.uncork} is called.\n */\n cork() {\n this.corked = true;\n }\n\n /**\n * Flushes all data buffered since {@link BufferedEventEmitter.cork} was called.\n *\n * NOTE: It is HIGHLY recommended that uncorking should always be done via\n * ``` process.nextTick```, not during the ```EventEmitter.on()``` call.\n */\n uncork() {\n this.corked = false;\n while (this.eventQueue) {\n const event = this.eventQueue;\n super.emit(event.event, ...event.args);\n this.eventQueue = this.eventQueue.next;\n }\n }\n\n /**\n * Synchronously calls each of the listeners registered for the event key supplied\n * in registration order. If the {@link BufferedEventEmitter} is currently corked,\n * the event will be buffered until {@link BufferedEventEmitter.uncork} is called.\n * @param event The name of the event\n * @param args Event payload\n */\n emit(event: EventKey, ...args: any[]): boolean {\n if (this.corked) {\n // queue requests in order\n let last = this.lastQueuedEvent;\n this.lastQueuedEvent = new BufferedEvent(event, args);\n if (last) {\n last.next = this.lastQueuedEvent;\n } else {\n this.eventQueue = this.lastQueuedEvent;\n }\n return this.listeners(event).length > 0;\n }\n\n return super.emit(event, ...args);\n }\n}\n","/*\n *\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing support for creating http connections and making requests on them.\n *\n * @packageDocumentation\n * @module http\n */\n\n/**\n * HTTP protocol version\n *\n * @category HTTP\n */\nexport enum HttpVersion {\n Unknown = 0,\n /** HTTP/1.0 */\n Http1_0 = 1,\n /** HTTP/1.1 */\n Http1_1 = 2,\n /** HTTP/2 */\n Http2 = 3,\n}\n\n/**\n * Headers are exposed as 2 element arrays: [name, value]\n *\n * @category HTTP\n */\nexport type HttpHeader = [string, string];\n\n/**\n * Common interface for a set of HTTP headers.\n *\n * @category HTTP\n */\nexport interface HttpHeaders {\n readonly length: number;\n\n /**\n * Add a name/value pair\n * @param name - The header name\n * @param value - The header value\n */\n add(name: string, value: string): void;\n\n /**\n * Set a name/value pair, replacing any existing values for the name\n * @param name - The header name\n * @param value - The header value\n */\n set(name: string, value: string): void;\n\n /**\n * Get the list of values for the given name\n * @param name - The header name to look for\n * @return List of values, or empty list if none exist\n */\n get_values(name: string): string[];\n\n /**\n * Gets the first value for the given name, ignoring any additional values\n * @param name - The header name to look for\n * @param default_value - Value returned if no values are found for the given name\n * @return The first header value, or default if no values exist\n */\n get(name: string, default_value?: string): string;\n\n /**\n * Removes all values for the given name\n * @param name - The header to remove all values for\n */\n remove(name: string): void;\n\n /**\n * Removes a specific name/value pair\n * @param name - The header name to remove\n * @param value - The header value to remove\n */\n remove_value(name: string, value: string): void;\n\n /** Clears the entire header set */\n clear(): void;\n\n /**\n * Iterator. Allows for:\n * let headers = new HttpHeaders();\n * ...\n * for (const header of headers) { }\n */\n [Symbol.iterator](): Iterator;\n\n /** @hidden */\n _flatten(): HttpHeader[];\n}\n\n/**\n * Proxy authentication types\n *\n * @category HTTP\n */\nexport enum HttpProxyAuthenticationType {\n\n /**\n * No to-proxy authentication logic\n */\n None = 0,\n\n /**\n * Use basic authentication (user/pass). Supply these values in {@link HttpProxyOptions}\n */\n Basic = 1,\n};\n\n/**\n * Options used when connecting to an HTTP endpoint via a proxy\n *\n * @category HTTP\n */\nexport class CommonHttpProxyOptions {\n\n /**\n *\n * @param host_name endpoint of the proxy to use\n * @param port port of proxy to use\n * @param auth_method type of authentication to use with the proxy\n * @param auth_username (basic authentication only) proxy username\n * @param auth_password (basic authentication only) password associated with the username\n */\n constructor(\n public host_name: string,\n public port: number,\n public auth_method = HttpProxyAuthenticationType.None,\n public auth_username?: string,\n public auth_password?: string\n ) {\n }\n}\n\n/**\n * Listener signature for event emitted from an {@link HttpClientConnection} when the connection reaches the\n * connected state\n *\n * @category HTTP\n */\nexport type HttpClientConnectionConnected = () => void;\n\n/**\n * Listener signature for event emitted from an {@link HttpClientConnection} when an error occurs\n *\n * @param error - A CrtError containing the error that occurred\n *\n * @category HTTP\n */\nexport type HttpClientConnectionError = (error: Error) => void;\n\n/**\n * Listener signature for event emitted from an {@link HttpClientConnection} when the connection has been closed\n *\n * @category HTTP\n */\nexport type HttpClientConnectionClosed = () => void;\n\n/**\n * Listener signature for event emitted from an {@link HttpClientStream} when http response data is available\n *\n * @param body_data - The chunk of body data\n *\n * @category HTTP\n */\nexport type HttpStreamData = (body_data: ArrayBuffer) => void;\n\n\n/**\n * Listener signature for event emitted from an {@link HttpClientStream} when an http stream error occurs\n *\n * @param error - A CrtError containing the error that occurred\n *\n * @category HTTP\n */\nexport type HttpStreamError = (error: Error) => void;\n\n/**\n * Listener signature for event emitted from an {@link HttpClientStream} when the http stream has completed.\n *\n * @category HTTP\n */\nexport type HttpStreamComplete = () => void;\n\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing a grab bag of support for core network I/O functionality, including sockets, TLS, DNS, logging,\n * error handling, streams, and connection -> thread mapping.\n *\n * Categories include:\n * - Network: socket configuration\n * - TLS: tls configuration\n * - Logging: logging controls and configuration\n * - IO: everything else\n *\n * @packageDocumentation\n * @module io\n */\n\n/**\n * TLS Version\n *\n * @category TLS\n */\nexport enum TlsVersion {\n SSLv3 = 0,\n TLSv1 = 1,\n TLSv1_1 = 2,\n TLSv1_2 = 3,\n TLSv1_3 = 4,\n Default = 128,\n}\n\n/**\n * @category Network\n */\nexport enum SocketType {\n /**\n * A streaming socket sends reliable messages over a two-way connection.\n * This means TCP when used with {@link SocketDomain.IPV4}/{@link SocketDomain.IPV6},\n * and Unix domain sockets when used with {@link SocketDomain.LOCAL }\n */\n STREAM = 0,\n /**\n * A datagram socket is connectionless and sends unreliable messages.\n * This means UDP when used with {@link SocketDomain.IPV4}/{@link SocketDomain.IPV6}.\n * {@link SocketDomain.LOCAL} is not compatible with {@link DGRAM}\n */\n DGRAM = 1,\n}\n\n/**\n * @category Network\n */\nexport enum SocketDomain {\n /** IPv4 sockets */\n IPV4 = 0,\n\n /** IPv6 sockets */\n IPV6 = 1,\n\n /** UNIX domain socket/Windows named pipes */\n LOCAL = 2,\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing support for mqtt connection establishment and operations.\n *\n * @packageDocumentation\n * @module mqtt\n */\n\nimport { ICrtError } from './error';\n\n/**\n * Quality of service control for mqtt publish operations\n *\n * @category MQTT\n */\nexport enum QoS {\n /**\n * QoS 0 - At most once delivery\n * The message is delivered according to the capabilities of the underlying network.\n * No response is sent by the receiver and no retry is performed by the sender.\n * The message arrives at the receiver either once or not at all.\n */\n AtMostOnce = 0,\n\n /**\n * QoS 1 - At least once delivery\n * This quality of service ensures that the message arrives at the receiver at least once.\n */\n AtLeastOnce = 1,\n\n /**\n * QoS 2 - Exactly once delivery\n\n * This is the highest quality of service, for use when neither loss nor\n * duplication of messages are acceptable. There is an increased overhead\n * associated with this quality of service.\n\n * Note that, while this client supports QoS 2, the AWS IoT Core service\n * does not support QoS 2 at time of writing (May 2020).\n */\n ExactlyOnce = 2,\n}\n\n/**\n * Possible types of data to send via publish.\n *\n * An ArrayBuffer will send its bytes without transformation.\n * An ArrayBufferView (DataView, Uint8Array, etc) will send its bytes without transformation.\n * A String will be sent with utf-8 encoding.\n * An Object will be sent as a JSON string with utf-8 encoding.\n *\n * @category MQTT\n */\nexport type Payload = string | Record | ArrayBuffer | ArrayBufferView;\n\n/**\n * Function called upon receipt of a Publish message on a subscribed topic.\n *\n * @param topic The topic to which the message was published.\n * @param payload The payload data.\n * @param dup DUP flag. If true, this might be re-delivery of an earlier\n * attempt to send the message.\n * @param qos Quality of Service used to deliver the message.\n * @param retain Retain flag. If true, the message was sent as a result of\n * a new subscription being made by the client. *\n *\n * @category MQTT\n */\nexport type OnMessageCallback = (topic: string, payload: ArrayBuffer, dup: boolean, qos: QoS, retain: boolean) => void;\n\n/**\n * Every request sent returns an MqttRequest\n *\n * @category MQTT\n */\nexport interface MqttRequest {\n /** Packet ID being acknowledged when the request completes */\n packet_id?: number;\n}\n\n/**\n * The data returned from an on_connection_success callback\n *\n * @category MQTT\n */\nexport interface OnConnectionSuccessResult {\n /**\n * A boolean indicating if the connection resumed a session.\n */\n session_present: boolean;\n /**\n * An optional connect return code received from the server, if a connect return code was returned.\n */\n reason_code?: number;\n}\n\n/**\n * The data returned from an on_connection_failed callback\n *\n * @category MQTT\n */\nexport interface OnConnectionFailedResult {\n /**\n * Error description of the error that occurred\n */\n error: ICrtError;\n}\n\n/**\n * The data returned from the on_connection_closed callback\n *\n * @category MQTT\n */\nexport interface OnConnectionClosedResult {}\n\n/**\n * Subscription SUBACK result\n *\n * @category MQTT\n */\nexport interface MqttSubscribeRequest extends MqttRequest {\n /** Topic filter of the SUBSCRIBE packet being acknowledged */\n topic: string;\n /** Maximum QoS granted by the server. This may be lower than the requested QoS. */\n qos: QoS;\n /** If an error occurred, the error code */\n error_code?: number;\n}\n\n/**\n * A Will message is published by the server if a client is lost unexpectedly.\n *\n * The Will message is stored on the server when a client connects.\n * It is published if the client connection is lost without the server\n * receiving a DISCONNECT packet.\n *\n * [MQTT - 3.1.2 - 8]\n *\n * @category MQTT\n */\nexport class MqttWill {\n constructor(\n /** Topic to publish Will message on. */\n readonly topic: string,\n /** QoS used when publishing the Will message. */\n readonly qos: QoS,\n /** Content of Will message. */\n readonly payload: Payload,\n /** Whether the Will message is to be retained when it is published. */\n readonly retain = false) {\n }\n}\n\n/**\n * Listener signature for event emitted from an {@link MqttClientConnection} when the connection reaches an initial\n * connected state\n *\n * @param session_present true if the reconnection went to an existing session, false if this is a clean session\n *\n * @category MQTT\n */\nexport type MqttConnectionConnected = (session_present: boolean) => void;\n\n/**\n * Listener signature for event emitted from an {@link MqttClientConnection} when the connection has fully disconnected\n * by user request\n *\n * @category MQTT\n */\nexport type MqttConnectionDisconnected = () => void;\n\n/**\n * Listener signature for event emitted from an {@link MqttClientConnection} when the connection successfully\n * reestablishes itself after an interruption\n *\n * @param return_code MQTT connect return code (should be 0 for a successful reconnection)\n * @param session_present true if the reconnection went to an existing session, false if this is a clean session\n *\n * @category MQTT\n */\nexport type MqttConnectionResumed = (return_code: number, session_present: boolean) => void;\n\n/**\n * Const value for max reconnection back off time\n *\n * @category MQTT\n */\nexport const DEFAULT_RECONNECT_MAX_SEC = 128;\n\n/**\n * Const value for min reconnection back off time\n *\n * @category MQTT\n */\n export const DEFAULT_RECONNECT_MIN_SEC = 1;\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * @packageDocumentation\n * @module mqtt5\n */\n\nimport * as mqtt5_packet from \"./mqtt5_packet\";\nimport { ICrtError } from \"./error\";\n\n/**\n * Mqtt behavior settings that are dynamically negotiated as part of the CONNECT/CONNACK exchange.\n *\n * While you can infer all of these values from a combination of\n * 1. defaults as specified in the mqtt5 spec\n * 1. your CONNECT settings\n * 1. the CONNACK from the broker\n *\n * the client instead does the combining for you and emits a NegotiatedSettings object with final, authoritative values.\n *\n * Negotiated settings are communicated with every successful connection establishment.\n */\nexport interface NegotiatedSettings {\n\n /**\n * The maximum QoS allowed for publishes on this connection instance\n */\n maximumQos: mqtt5_packet.QoS;\n\n /**\n * The amount of time in seconds the server will retain the MQTT session after a disconnect.\n */\n sessionExpiryInterval: number;\n\n /**\n * The number of in-flight QoS 1 and QoS2 publications the server is willing to process concurrently.\n */\n receiveMaximumFromServer: number;\n\n /**\n * The maximum packet size the server is willing to accept.\n */\n maximumPacketSizeToServer: number;\n\n /**\n * the maximum allowed topic alias value on publishes sent from client to server\n */\n topicAliasMaximumToServer: number;\n\n /**\n * the maximum allowed topic alias value on publishes sent from server to client\n */\n topicAliasMaximumToClient: number;\n\n /**\n * The maximum amount of time in seconds between client packets. The client should use PINGREQs to ensure this\n * limit is not breached. The server will disconnect the client for inactivity if no MQTT packet is received\n * in a time interval equal to 1.5 x this value.\n */\n serverKeepAlive: number;\n\n /**\n * Whether the server supports retained messages.\n */\n retainAvailable: boolean;\n\n /**\n * Whether the server supports wildcard subscriptions.\n */\n wildcardSubscriptionsAvailable: boolean;\n\n /**\n * Whether the server supports subscription identifiers\n */\n subscriptionIdentifiersAvailable: boolean;\n\n /**\n * Whether the server supports shared subscriptions\n */\n sharedSubscriptionsAvailable: boolean;\n\n /**\n * Whether the client has rejoined an existing session.\n */\n rejoinedSession: boolean;\n\n /**\n * The final client id in use by the newly-established connection. This will be the configured client id if one\n * was given in the configuration, otherwise, if no client id was specified, this will be the client id assigned\n * by the server. Reconnection attempts will always use the auto-assigned client id, allowing for auto-assigned\n * session resumption.\n */\n clientId: string;\n}\n\n/**\n * Controls how the MQTT5 client should behave with respect to MQTT sessions.\n */\nexport enum ClientSessionBehavior {\n\n /** Maps to Clean */\n Default = 0,\n\n /**\n * Always ask for a clean session when connecting\n */\n Clean = 1,\n\n /**\n * Always attempt to rejoin an existing session after an initial connection success.\n *\n * Session rejoin requires an appropriate non-zero session expiry interval in the client's CONNECT options.\n */\n RejoinPostSuccess = 2,\n\n /**\n * Always attempt to rejoin an existing session. Since the client does not yet support durable session persistence,\n * this option is not guaranteed to be spec compliant because any unacknowledged qos1 publishes (which are\n * part of the client session state) will not be present on the initial connection. Until we support\n * durable session resumption, this option is technically spec-breaking, but useful.\n */\n RejoinAlways = 3,\n}\n\n/**\n * Controls how the reconnect delay is modified in order to smooth out the distribution of reconnection attempt\n * timepoints for a large set of reconnecting clients.\n *\n * See [Exponential Backoff and Jitter](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)\n */\nexport enum RetryJitterType {\n\n /**\n * Maps to Full\n */\n Default = 0,\n\n /**\n * Do not perform any randomization on the reconnect delay:\n * ```NextReconnectDelay = CurrentExponentialBackoffValue```\n */\n None = 1,\n\n /**\n * Fully random between no delay and the current exponential backoff value.\n * ```NextReconnectDelay = Random(0, CurrentExponentialBackoffValue)```\n */\n Full = 2,\n\n /**\n * ```NextReconnectDelay = Min(MaxReconnectDelay, Random(MinReconnectDelay, 3 * CurrentReconnectDelay)```\n */\n Decorrelated = 3,\n}\n\n/**\n * An enumeration that controls how the client applies topic aliasing to outbound publish packets.\n *\n * Topic alias behavior is described in https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901113\n */\nexport enum OutboundTopicAliasBehaviorType {\n\n /**\n * Maps to Disabled. This keeps the client from being broken (by default) if the broker\n * topic aliasing implementation has a problem.\n */\n Default = 0,\n\n /**\n * Outbound aliasing is the user's responsibility. Client will cache and use\n * previously-established aliases if they fall within the negotiated limits of the connection.\n *\n * The user must still always submit a full topic in their publishes because disconnections disrupt\n * topic alias mappings unpredictably. The client will properly use a requested alias when the most-recently-seen\n * binding for a topic alias value matches the alias and topic in the publish packet.\n */\n Manual = 1,\n\n /**\n * (Recommended) The client will use an LRU cache to drive alias usage.\n *\n * Manually setting a topic alias will be ignored (the LRU cache is authoritative)\n */\n LRU = 2,\n\n /**\n * Completely disable outbound topic aliasing.\n */\n Disabled = 3,\n}\n\n/**\n * An enumeration that controls whether or not the client allows the broker to send publishes that use topic\n * aliasing.\n *\n * Topic alias behavior is described in https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901113\n */\nexport enum InboundTopicAliasBehaviorType {\n\n /**\n * Maps to Disabled. This keeps the client from being broken (by default) if the broker\n * topic aliasing implementation has a problem.\n */\n Default = 0,\n\n /**\n * Allow the server to send PUBLISH packets to the client that use topic aliasing\n */\n Enabled = 1,\n\n /**\n * Forbid the server from sending PUBLISH packets to the client that use topic aliasing\n */\n Disabled = 2,\n}\n\n/**\n * Configuration for all client topic aliasing behavior.\n */\nexport interface TopicAliasingOptions {\n\n /**\n * Controls what kind of outbound topic aliasing behavior the client should attempt to use.\n *\n * If topic aliasing is not supported by the server, this setting has no effect and any attempts to directly\n * manipulate the topic alias id in outbound publishes will be ignored.\n *\n * If left undefined, then outbound topic aliasing is disabled.\n */\n outboundBehavior?: OutboundTopicAliasBehaviorType,\n\n /**\n * If outbound topic aliasing is set to LRU, this controls the maximum size of the cache. If outbound topic\n * aliasing is set to LRU and this is zero or undefined, a sensible default is used (25). If outbound topic\n * aliasing is not set to LRU, then this setting has no effect.\n *\n * The final size of the cache is determined by the minimum of this setting and the value of the\n * topic_alias_maximum property of the received CONNACK. If the received CONNACK does not have an explicit\n * positive value for that field, outbound topic aliasing is disabled for the duration of that connection.\n */\n outboundCacheMaxSize?: number,\n\n /**\n * Controls whether or not the client allows the broker to use topic aliasing when sending publishes. Even if\n * inbound topic aliasing is enabled, it is up to the server to choose whether or not to use it.\n *\n * If left undefined, then inbound topic aliasing is disabled.\n *\n * This field has no effect in the browser implementation.\n */\n inboundBehavior?: InboundTopicAliasBehaviorType,\n\n /**\n * If inbound topic aliasing is enabled, this will control the size of the inbound alias cache. If inbound\n * aliases are enabled and this is zero or undefined, then a sensible default will be used (25). If inbound\n * aliases are disabled, this setting has no effect.\n *\n * Behaviorally, this value overrides anything present in the topic_alias_maximum field of\n * the CONNECT packet options.\n *\n * This field has no effect in the browser implementation.\n */\n inboundCacheMaxSize?: number,\n}\n\n/* MQTT5 Event types */\n\n/**\n * Payload of the Stopped event for the MQTT5 client.\n */\nexport interface StoppedEvent {\n}\n\n/**\n * Payload of the AttemptingConnect event for the MQTT5 client.\n */\nexport interface AttemptingConnectEvent {\n}\n\n/**\n * Payload of the ConnectionSuccess event for the MQTT5 client.\n */\nexport interface ConnectionSuccessEvent {\n\n /**\n * CONNACK packet received from the server.\n */\n connack: mqtt5_packet.ConnackPacket;\n\n /**\n * Final MQTT5 connection settings negotiated with the server.\n */\n settings: NegotiatedSettings;\n}\n\n/**\n * Payload of the ConnectionFailure event for the MQTT5 client.\n */\nexport interface ConnectionFailureEvent {\n\n /**\n * Description of why the connection attempt failed.\n */\n error: ICrtError;\n\n /**\n * If the connection failure was indicated by the server's CONNACK response, the CONNACK packet received from\n * the server.\n */\n connack?: mqtt5_packet.ConnackPacket;\n}\n\n/**\n * Payload of the Disconnection event for the MQTT5 client.\n */\nexport interface DisconnectionEvent {\n\n /**\n * Best-guess description of why the disconnection occurred.\n */\n error: ICrtError;\n\n /**\n * If the disconnection event was due to a server-side DISCONNECT packet, the DISCONNECT packet received from\n * the server.\n */\n disconnect?: mqtt5_packet.DisconnectPacket;\n}\n\n/**\n * Payload of the MessageReceived event for the MQTT5 client.\n */\nexport interface MessageReceivedEvent {\n\n /**\n * PUBLISH packet received from the server\n */\n message: mqtt5_packet.PublishPacket;\n}\n\n/**\n * Client Error event listener signature\n */\nexport type ErrorEventListener = (error: ICrtError) => void;\n\n/**\n * Client Stopped lifecycle event listener signature\n */\nexport type StoppedEventListener = (eventData:StoppedEvent) => void;\n\n/**\n * Client AttemptingConnect lifecycle event listener signature\n */\nexport type AttemptingConnectEventListener = (eventData: AttemptingConnectEvent) => void;\n\n/**\n * Client ConnectionSuccess lifecycle event listener signature\n */\nexport type ConnectionSuccessEventListener = (eventData: ConnectionSuccessEvent) => void;\n\n/**\n * Client ConnectionFailure lifecycle event listener signature\n */\nexport type ConnectionFailureEventListener = (eventData: ConnectionFailureEvent) => void;\n\n/**\n * Client Disconnection lifecycle event listener signature\n */\nexport type DisconnectionEventListener = (eventData: DisconnectionEvent) => void;\n\n/**\n * Message received event listener signature\n */\nexport type MessageReceivedEventListener = (eventData: MessageReceivedEvent) => void;\n\n/**\n * Polymorphic success result for publish actions:\n *\n * * QoS 0 - resolves to undefined\n * * QoS 1 - resolves to a {@link PubackPacket}\n * * QoS 2 - (not yet supported) would resolve to a Pubcomp or a Pubrec\n */\nexport type PublishCompletionResult = mqtt5_packet.PubackPacket | undefined;\n\n/**\n * Shared MQTT5 client interface across browser and node.\n *\n * Common event manipulation patterns have explicit functions separate from the EventListener interface because\n * creating an abstract event listening interface in typescript eludes me.\n */\nexport interface IMqtt5Client {\n\n /**\n * Triggers cleanup of native resources associated with the MQTT5 client. Once this has been invoked, callbacks\n * and events are not guaranteed to be received.\n *\n * On the browser, the implementation is an empty function.\n *\n * On Node, this must be called when finished with a client; otherwise, native resources will leak. It is not safe\n * to invoke any further operations on the client after close() has been called.\n *\n * For a running client, safe and proper shutdown can be accomplished by\n *\n * ```ts\n * const stopped = once(client, \"stopped\");\n * client.stop();\n * await stopped;\n * client.close();\n * ```\n *\n * This is an asynchronous operation.\n */\n close() : void;\n\n /**\n * Notifies the MQTT5 client that you want it to maintain connectivity to the configured endpoint.\n * The client will attempt to stay connected using the properties of the reconnect-related parameters\n * in the mqtt5 client configuration.\n *\n * This is an asynchronous operation.\n */\n start() : void;\n\n /**\n * Notifies the MQTT5 client that you want it to end connectivity to the configured endpoint, disconnecting any\n * existing connection and halting reconnection attempts.\n *\n * This is an asynchronous operation. Once the process completes, no further events will be emitted until the client\n * has {@link start} invoked.\n *\n * @param disconnectPacket (optional) properties of a DISCONNECT packet to send as part of the shutdown process\n */\n stop(packet?: mqtt5_packet.DisconnectPacket) : void;\n\n /**\n * Subscribe to one or more topic filters by queuing a SUBSCRIBE packet to be sent to the server.\n *\n * @param packet SUBSCRIBE packet to send to the server\n * @returns a promise that will be rejected with an error or resolved with the SUBACK response\n */\n subscribe(packet: mqtt5_packet.SubscribePacket) : Promise;\n\n /**\n * Unsubscribe from one or more topic filters by queuing an UNSUBSCRIBE packet to be sent to the server.\n *\n * @param packet UNSUBSCRIBE packet to send to the server\n * @returns a promise that will be rejected with an error or resolved with the UNSUBACK response\n */\n unsubscribe(packet: mqtt5_packet.UnsubscribePacket) : Promise;\n\n /**\n * Send a message to subscribing clients by queuing a PUBLISH packet to be sent to the server.\n *\n * @param packet PUBLISH packet to send to the server\n * @returns a promise that will be rejected with an error or resolved with the PUBACK response\n */\n publish(packet: mqtt5_packet.PublishPacket) : Promise;\n\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * @packageDocumentation\n * @module mqtt5\n */\n\n/**\n * Data model for MQTT5 user properties.\n *\n * A user property is a name-value pair of utf-8 strings that can be added to mqtt5 packets.\n */\nexport interface UserProperty {\n name: string;\n value: string;\n}\n\n/**\n * Server return code for connect attempts.\n *\n * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901079) encoding values.\n */\nexport enum ConnectReasonCode {\n\n /**\n * Returned when the connection is accepted.\n */\n Success = 0,\n\n /**\n * Returned when the server has a failure but does not want to specify a reason or none\n * of the other reason codes apply.\n */\n UnspecifiedError = 128,\n\n /**\n * Returned when data in the CONNECT packet could not be correctly parsed by the server.\n */\n MalformedPacket = 129,\n\n /**\n * Returned when data in the CONNECT packet does not conform to the MQTT5 specification requirements.\n */\n ProtocolError = 130,\n\n /**\n * Returned when the CONNECT packet is valid but was not accepted by the server.\n */\n ImplementationSpecificError = 131,\n\n /**\n * Returned when the server does not support MQTT5 protocol version specified in the connection.\n */\n UnsupportedProtocolVersion = 132,\n\n /**\n * Returned when the client identifier in the CONNECT packet is a valid string but not one that\n * is allowed on the server.\n */\n ClientIdentifierNotValid = 133,\n\n /**\n * Returned when the server does not accept the username and/or password specified by the client\n * in the connection packet.\n */\n BadUsernameOrPassword = 134,\n\n /**\n * Returned when the client is not authorized to connect to the server.\n */\n NotAuthorized = 135,\n\n /**\n * Returned when the MQTT5 server is not available.\n */\n ServerUnavailable = 136,\n\n /**\n * Returned when the server is too busy to make a connection. It is recommended that the client try again later.\n */\n ServerBusy = 137,\n\n /**\n * Returned when the client has been banned by the server.\n */\n Banned = 138,\n\n /**\n * Returned when the authentication method used in the connection is either not supported on the server or it does\n * not match the authentication method currently in use in the CONNECT packet.\n */\n BadAuthenticationMethod = 140,\n\n /**\n * Returned when the Will topic name sent in the connection packet is correctly formed, but is not accepted by\n * the server.\n */\n TopicNameInvalid = 144,\n\n /**\n * Returned when the connection packet exceeded the maximum permissible size on the server.\n */\n PacketTooLarge = 149,\n\n /**\n * Returned when the quota limits set on the server have been met and/or exceeded.\n */\n QuotaExceeded = 151,\n\n /**\n * Returned when the Will payload in the CONNECT packet does not match the specified payload format indicator.\n */\n PayloadFormatInvalid = 153,\n\n /**\n * Returned when the server does not retain messages but the connection packet on the client had Will retain enabled.\n */\n RetainNotSupported = 154,\n\n /**\n * Returned when the server does not support the QOS setting in the Will QOS in the connection packet.\n */\n QosNotSupported = 155,\n\n /**\n * Returned when the server is telling the client to temporarily use another server instead of the one they\n * are trying to connect to.\n */\n UseAnotherServer = 156,\n\n /**\n * Returned when the server is telling the client to permanently use another server instead of the one they\n * are trying to connect to.\n */\n ServerMoved = 157,\n\n /**\n * Returned when the server connection rate limit has been exceeded.\n */\n ConnectionRateExceeded = 159,\n}\n\n/**\n * Determines if a reason code represents a successful connect operation\n *\n * @param reasonCode reason code to check success for\n */\nexport function isSuccessfulConnectReasonCode(reasonCode: ConnectReasonCode): boolean {\n return reasonCode < 128;\n}\n\n/**\n * Reason code inside DISCONNECT packets. Helps determine why a connection was terminated.\n *\n * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901208) encoding values.\n */\nexport enum DisconnectReasonCode {\n\n /**\n * Returned when the remote endpoint wishes to disconnect normally. Will not trigger the publish of a Will message if a\n * Will message was configured on the connection.\n *\n * May be sent by the client or server.\n */\n NormalDisconnection = 0,\n\n /**\n * Returns that the client wants to disconnect but requires that the server publish the Will message configured\n * on the connection.\n *\n * May only be sent by the client.\n */\n DisconnectWithWillMessage = 4,\n\n /**\n * Returned when the connection was closed but the sender does not want to specify a reason or none\n * of the other reason codes apply.\n *\n * May be sent by the client or the server.\n */\n UnspecifiedError = 128,\n\n /**\n * Indicates the remote endpoint received a packet that does not conform to the MQTT specification.\n *\n * May be sent by the client or the server.\n */\n MalformedPacket = 129,\n\n /**\n * Returned when an unexpected or out-of-order packet was received by the remote endpoint.\n *\n * May be sent by the client or the server.\n */\n ProtocolError = 130,\n\n /**\n * Returned when a valid packet was received by the remote endpoint, but could not be processed by the current implementation.\n *\n * May be sent by the client or the server.\n */\n ImplementationSpecificError = 131,\n\n /**\n * Returned when the remote endpoint received a packet that represented an operation that was not authorized within\n * the current connection.\n *\n * May only be sent by the server.\n */\n NotAuthorized = 135,\n\n /**\n * Returned when the server is busy and cannot continue processing packets from the client.\n *\n * May only be sent by the server.\n */\n ServerBusy = 137,\n\n /**\n * Returned when the server is shutting down.\n *\n * May only be sent by the server.\n */\n ServerShuttingDown = 139,\n\n /**\n * Returned when the server closes the connection because no packet from the client has been received in\n * 1.5 times the KeepAlive time set when the connection was established.\n *\n * May only be sent by the server.\n */\n KeepAliveTimeout = 141,\n\n /**\n * Returned when the server has established another connection with the same client ID as a client's current\n * connection, causing the current client to become disconnected.\n *\n * May only be sent by the server.\n */\n SessionTakenOver = 142,\n\n /**\n * Returned when the topic filter name is correctly formed but not accepted by the server.\n *\n * May only be sent by the server.\n */\n TopicFilterInvalid = 143,\n\n /**\n * Returned when topic name is correctly formed, but is not accepted.\n *\n * May be sent by the client or the server.\n */\n TopicNameInvalid = 144,\n\n /**\n * Returned when the remote endpoint reached a state where there were more in-progress QoS1+ publishes then the\n * limit it established for itself when the connection was opened.\n *\n * May be sent by the client or the server.\n */\n ReceiveMaximumExceeded = 147,\n\n /**\n * Returned when the remote endpoint receives a PUBLISH packet that contained a topic alias greater than the\n * maximum topic alias limit that it established for itself when the connection was opened.\n *\n * May be sent by the client or the server.\n */\n TopicAliasInvalid = 148,\n\n /**\n * Returned when the remote endpoint received a packet whose size was greater than the maximum packet size limit\n * it established for itself when the connection was opened.\n *\n * May be sent by the client or the server.\n */\n PacketTooLarge = 149,\n\n /**\n * Returned when the remote endpoint's incoming data rate was too high.\n *\n * May be sent by the client or the server.\n */\n MessageRateTooHigh = 150,\n\n /**\n * Returned when an internal quota of the remote endpoint was exceeded.\n *\n * May be sent by the client or the server.\n */\n QuotaExceeded = 151,\n\n /**\n * Returned when the connection was closed due to an administrative action.\n *\n * May be sent by the client or the server.\n */\n AdministrativeAction = 152,\n\n /**\n * Returned when the remote endpoint received a packet where payload format did not match the format specified\n * by the payload format indicator.\n *\n * May be sent by the client or the server.\n */\n PayloadFormatInvalid = 153,\n\n /**\n * Returned when the server does not support retained messages.\n *\n * May only be sent by the server.\n */\n RetainNotSupported = 154,\n\n\n /**\n * Returned when the client sends a QOS that is greater than the maximum QOS established when the connection was\n * opened.\n *\n * May only be sent by the server.\n */\n QosNotSupported = 155,\n\n /**\n * Returned by the server to tell the client to temporarily use a different server.\n *\n * May only be sent by the server.\n */\n UseAnotherServer = 156,\n\n /**\n * Returned by the server to tell the client to permanently use a different server.\n *\n * May only be sent by the server.\n */\n ServerMoved = 157,\n\n /**\n * Returned by the server to tell the client that shared subscriptions are not supported on the server.\n *\n * May only be sent by the server.\n */\n SharedSubscriptionsNotSupported = 158,\n\n /**\n * Returned when the server disconnects the client due to the connection rate being too high.\n *\n * May only be sent by the server.\n */\n ConnectionRateExceeded = 159,\n\n /**\n * Returned by the server when the maximum connection time authorized for the connection was exceeded.\n *\n * May only be sent by the server.\n */\n MaximumConnectTime = 160,\n\n /**\n * Returned by the server when it received a SUBSCRIBE packet with a subscription identifier, but the server does\n * not support subscription identifiers.\n *\n * May only be sent by the server.\n */\n SubscriptionIdentifiersNotSupported = 161,\n\n /**\n * Returned by the server when it received a SUBSCRIBE packet with a wildcard topic filter, but the server does\n * not support wildcard topic filters.\n *\n * May only be sent by the server.\n */\n WildcardSubscriptionsNotSupported = 162,\n}\n\n/**\n * Determines if a reason code represents a successful disconnect operation\n *\n * @param reasonCode reason code to check success for\n */\nexport function isSuccessfulDisconnectReasonCode(reasonCode: DisconnectReasonCode): boolean {\n return reasonCode < 128;\n}\n\n/**\n * Reason codes inside SUBACK packet payloads that specify the results for each subscription in the associated\n * SUBSCRIBE packet.\n *\n * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901178) encoding values.\n */\nexport enum SubackReasonCode {\n\n /**\n * Returned when the subscription was accepted and the maximum QOS sent will be QOS 0.\n */\n GrantedQoS0 = 0,\n\n /**\n * Returned when the subscription was accepted and the maximum QOS sent will be QOS 1.\n */\n GrantedQoS1 = 1,\n\n /**\n * Returned when the subscription was accepted and the maximum QOS sent will be QOS 2.\n */\n GrantedQoS2 = 2,\n\n\n /**\n * Returned when the connection was closed but the sender does not want to specify a reason or none\n * of the other reason codes apply.\n */\n UnspecifiedError = 128,\n\n /**\n * Returned when the subscription was valid but the server did not accept it.\n */\n ImplementationSpecificError = 131,\n\n /**\n * Returned when the client was not authorized to make the subscription on the server.\n */\n NotAuthorized = 135,\n\n /**\n * Returned when the subscription topic filter was correctly formed but not allowed for the client.\n */\n TopicFilterInvalid = 143,\n\n /**\n * Returned when the packet identifier was already in use on the server.\n */\n PacketIdentifierInUse = 145,\n\n /**\n * Returned when a subscribe-related quota set on the server was exceeded.\n */\n QuotaExceeded = 151,\n\n /**\n * Returned when the subscription's topic filter was a shared subscription and the server does not support\n * shared subscriptions.\n */\n SharedSubscriptionsNotSupported = 158,\n\n /**\n * Returned when the SUBSCRIBE packet contained a subscription identifier and the server does not support\n * subscription identifiers.\n */\n SubscriptionIdentifiersNotSupported = 161,\n\n /**\n * Returned when the subscription's topic filter contains a wildcard but the server does not support\n * wildcard subscriptions.\n */\n WildcardSubscriptionsNotSupported = 162,\n}\n\n/**\n * Determines if a reason code represents a successful subscribe operation\n *\n * @param reasonCode reason code to check success for\n */\nexport function isSuccessfulSubackReasonCode(reasonCode: SubackReasonCode): boolean {\n return reasonCode < 128;\n}\n\n/**\n * Reason codes inside UNSUBACK packet payloads that specify the results for each topic filter in the associated\n * UNSUBSCRIBE packet.\n *\n * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901194) encoding values.\n */\nexport enum UnsubackReasonCode {\n\n /**\n * Returned when the unsubscribe was successful and the client is no longer subscribed to the topic filter on the server.\n */\n Success = 0,\n\n /**\n * Returned when the topic filter did not match one of the client's existing subscriptions on the server.\n */\n NoSubscriptionExisted = 17,\n\n /**\n * Returned when the unsubscribe of the topic filter was not accepted and the server does not want to specify a\n * reason or none of the other reason codes apply.\n */\n UnspecifiedError = 128,\n\n /**\n * Returned when the topic filter was valid but the server does not accept an unsubscribe for it.\n */\n ImplementationSpecificError = 131,\n\n /**\n * Returned when the client was not authorized to unsubscribe from that topic filter on the server.\n */\n NotAuthorized = 135,\n\n /**\n * Returned when the topic filter was correctly formed but is not allowed for the client on the server.\n */\n TopicFilterInvalid = 143,\n\n /**\n * Returned when the packet identifier was already in use on the server.\n */\n PacketIdentifierInUse = 145,\n}\n\n/**\n * Determines if a reason code represents a successful unsubscribe operation\n *\n * @param reasonCode reason code to check success for\n */\nexport function isSuccessfulUnsubackReasonCode(reasonCode: UnsubackReasonCode): boolean {\n return reasonCode < 128;\n}\n\n/**\n * Reason code inside PUBACK packets that indicates the result of the associated PUBLISH request.\n *\n * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901124) encoding values.\n */\nexport enum PubackReasonCode {\n\n /**\n * Returned when the (QoS 1) publish was accepted by the recipient.\n *\n * May be sent by the client or the server.\n */\n Success = 0,\n\n /**\n * Returned when the (QoS 1) publish was accepted but there were no matching subscribers.\n *\n * May only be sent by the server.\n */\n NoMatchingSubscribers = 16,\n\n /**\n * Returned when the (QoS 1) publish was not accepted and the receiver does not want to specify a reason or none\n * of the other reason codes apply.\n *\n * May be sent by the client or the server.\n */\n UnspecifiedError = 128,\n\n /**\n * Returned when the (QoS 1) publish was valid but the receiver was not willing to accept it.\n *\n * May be sent by the client or the server.\n */\n ImplementationSpecificError = 131,\n\n /**\n * Returned when the (QoS 1) publish was not authorized by the receiver.\n *\n * May be sent by the client or the server.\n */\n NotAuthorized = 135,\n\n /**\n * Returned when the topic name was valid but the receiver was not willing to accept it.\n *\n * May be sent by the client or the server.\n */\n TopicNameInvalid = 144,\n\n /**\n * Returned when the packet identifier used in the associated PUBLISH was already in use.\n * This can indicate a mismatch in the session state between client and server.\n *\n * May be sent by the client or the server.\n */\n PacketIdentifierInUse = 145,\n\n /**\n * Returned when the associated PUBLISH failed because an internal quota on the recipient was exceeded.\n *\n * May be sent by the client or the server.\n */\n QuotaExceeded = 151,\n\n /**\n * Returned when the PUBLISH packet's payload format did not match its payload format indicator property.\n *\n * May be sent by the client or the server.\n */\n PayloadFormatInvalid = 153,\n}\n\n/**\n * Determines if a reason code represents a successful QoS 1 publish operation\n *\n * @param reasonCode reason code to check success for\n */\nexport function isSuccessfulPubackReasonCode(reasonCode: PubackReasonCode): boolean {\n return reasonCode < 128;\n}\n\n/**\n * Optional property describing a PUBLISH payload's format.\n *\n * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901111) encoding values.\n */\nexport enum PayloadFormatIndicator {\n\n /**\n * The payload is arbitrary binary data\n */\n Bytes = 0,\n\n /**\n * The payload is a well-formed utf-8 string value.\n */\n Utf8 = 1,\n}\n\n/**\n * Valid types for a PUBLISH packet's payload\n *\n * While the payload as input can be one of several types, the payload as output (via message receipt)\n * will always be an ArrayBuffer of binary data.\n */\nexport type Payload = string | Record | ArrayBuffer | ArrayBufferView;\n\n/**\n * Valid types for MQTT5 packet binary data fields (other than PUBLISH payload)\n */\nexport type BinaryData = ArrayBuffer | ArrayBufferView;\n\n/**\n * MQTT message delivery quality of service.\n *\n * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901234) encoding values.\n */\nexport enum QoS {\n\n /**\n * The message is delivered according to the capabilities of the underlying network. No response is sent by the\n * receiver and no retry is performed by the sender. The message arrives at the receiver either once or not at all.\n */\n AtMostOnce = 0,\n\n /**\n * A level of service that ensures that the message arrives at the receiver at least once.\n */\n AtLeastOnce = 1,\n\n /**\n * A level of service that ensures that the message arrives at the receiver exactly once.\n */\n ExactlyOnce = 2,\n}\n\n/**\n * Configures how retained messages should be handled when subscribing with a topic filter that matches topics with\n * associated retained messages.\n *\n * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169) encoding values.\n */\nexport enum RetainHandlingType {\n\n /**\n * The server should always send all retained messages on topics that match a subscription's filter.\n */\n SendOnSubscribe = 0x00,\n\n /**\n * The server should send retained messages on topics that match the subscription's filter, but only for the\n * first matching subscription, per session.\n */\n SendOnSubscribeIfNew = 0x01,\n\n /**\n * Subscriptions must not trigger any retained message publishes from the server.\n */\n DontSend = 0x02,\n}\n\n/**\n * Packet type indicator that allows for basic polymorphism with user-received packets. Enum values\n * match the mqtt spec's [packet type encoding](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901022) values.\n */\nexport enum PacketType {\n Connect = 1,\n Connack = 2,\n Publish = 3,\n Puback = 4,\n Pubrec = 5,\n Pubrel = 6,\n Pubcomp = 7,\n Subscribe = 8,\n Suback = 9,\n Unsubscribe = 10,\n Unsuback = 11,\n Pingreq = 12,\n Pingresp = 13,\n Disconnect = 14,\n Auth = 15,\n}\n\n/**\n * Common interface for all packet types.\n */\nexport interface IPacket {\n\n /**\n * Always set on packets coming from the client to the user. Ignored if set on packets that come from the\n * user to the client.\n *\n * The primary use is to allow users to distinguish between packets in polymorphic situations (for example,\n * the result of a publish attempt which might be a Puback (QoS 1) or Pubcomp (QoS 2, when we support it).\n */\n type?: PacketType;\n\n}\n\n/**\n * Data model of an [MQTT5 PUBLISH](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901100) packet\n */\nexport interface PublishPacket extends IPacket {\n\n /**\n * Sent publishes - The topic this message should be published to.\n *\n * Received publishes - The topic this message was published to.\n *\n * See [MQTT5 Topic Name](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901107)\n */\n topicName: string;\n\n /**\n * The payload of the publish message.\n *\n * See [MQTT5 Publish Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901119)\n */\n payload?: Payload;\n\n /**\n * Sent publishes - The MQTT quality of service level this message should be delivered with.\n *\n * Received publishes - The MQTT quality of service level this message was delivered at.\n *\n * See [MQTT5 QoS](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901103)\n */\n qos: QoS;\n\n /**\n * True if this is a retained message, false otherwise.\n *\n * Always set on received publishes; on sent publishes, undefined implies false.\n *\n * See [MQTT5 Retain](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901104)\n */\n retain?: boolean;\n\n /**\n * Property specifying the format of the payload data. The mqtt5 client does not enforce or use this\n * value in a meaningful way.\n *\n * See [MQTT5 Payload Format Indicator](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901111)\n */\n payloadFormat?: PayloadFormatIndicator;\n\n /**\n * Sent publishes - indicates the maximum amount of time allowed to elapse for message delivery before the server\n * should instead delete the message (relative to a recipient).\n *\n * Received publishes - indicates the remaining amount of time (from the server's perspective) before the message would\n * have been deleted relative to the subscribing client.\n *\n * If left undefined, indicates no expiration timeout.\n *\n * See [MQTT5 Message Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901112)\n */\n messageExpiryIntervalSeconds?: number;\n\n /**\n * Sent publishes - (Node only) topic alias to use, if possible, when encoding this packet. Only used if the\n * client's outbound topic aliasing mode is set to Manual.\n *\n * Received publishes - topic alias used by the server when transmitting the publish to the client.\n *\n * See [MQTT5 Topic Alias](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901113)\n */\n topicAlias?: number;\n\n /**\n * Opaque topic string intended to assist with request/response implementations. Not internally meaningful to\n * MQTT5 or this client.\n *\n * See [MQTT5 Response Topic](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901114)\n */\n responseTopic?: string;\n\n /**\n * Opaque binary data used to correlate between publish messages, as a potential method for request-response\n * implementation. Not internally meaningful to MQTT5.\n *\n * See [MQTT5 Correlation Data](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901115)\n */\n correlationData?: BinaryData;\n\n /**\n * Sent publishes - ignored\n *\n * Received publishes - the subscription identifiers of all the subscriptions this message matched.\n *\n * See [MQTT5 Subscription Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901117)\n */\n subscriptionIdentifiers?: Array;\n\n /**\n * Property specifying the content type of the payload. Not internally meaningful to MQTT5.\n *\n * See [MQTT5 Content Type](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901118)\n */\n contentType?: string;\n\n /**\n * Set of MQTT5 user properties included with the packet.\n *\n * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901116)\n */\n userProperties?: Array;\n}\n\n/**\n * Data model of an [MQTT5 PUBACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901121) packet\n */\nexport interface PubackPacket extends IPacket {\n\n /**\n * Success indicator or failure reason for the associated PUBLISH packet.\n *\n * See [MQTT5 PUBACK Reason Code](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901124)\n */\n reasonCode: PubackReasonCode;\n\n /**\n * Additional diagnostic information about the result of the PUBLISH attempt.\n *\n * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901127)\n */\n reasonString?: string;\n\n /**\n * Set of MQTT5 user properties included with the packet.\n *\n * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901128)\n */\n userProperties?: Array;\n}\n\n/**\n * Data model of an [MQTT5 CONNECT](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901033) packet.\n */\nexport interface ConnectPacket extends IPacket {\n\n /**\n * The maximum time interval, in seconds, that is permitted to elapse between the point at which the client\n * finishes transmitting one MQTT packet and the point it starts sending the next. The client will use\n * PINGREQ packets to maintain this property.\n *\n * If the responding CONNACK contains a keep alive property value, then that is the negotiated keep alive value.\n * Otherwise, the keep alive sent by the client is the negotiated value.\n *\n * See [MQTT5 Keep Alive](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901045)\n */\n keepAliveIntervalSeconds: number;\n\n /**\n * A unique string identifying the client to the server. Used to restore session state between connections.\n *\n * If left empty, the broker will auto-assign a unique client id. When reconnecting, the mqtt5 client will\n * always use the auto-assigned client id.\n *\n * See [MQTT5 Client Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901059)\n */\n clientId?: string;\n\n /**\n * A string value that the server may use for client authentication and authorization.\n *\n * See [MQTT5 User Name](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901071)\n */\n username?: string;\n\n /**\n * Opaque binary data that the server may use for client authentication and authorization.\n *\n * See [MQTT5 Password](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901072)\n */\n password?: BinaryData;\n\n /**\n * A time interval, in seconds, that the client requests the server to persist this connection's MQTT session state\n * for. Has no meaning if the client has not been configured to rejoin sessions. Must be non-zero in order to\n * successfully rejoin a session.\n *\n * If the responding CONNACK contains a session expiry property value, then that is the negotiated session expiry\n * value. Otherwise, the session expiry sent by the client is the negotiated value.\n *\n * See [MQTT5 Session Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901048)\n */\n sessionExpiryIntervalSeconds?: number;\n\n /**\n * If set to true, requests that the server send response information in the subsequent CONNACK. This response\n * information may be used to set up request-response implementations over MQTT, but doing so is outside\n * the scope of the MQTT5 spec and client.\n *\n * See [MQTT5 Request Response Information](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901052)\n */\n requestResponseInformation?: boolean;\n\n /**\n * If set to true, requests that the server send additional diagnostic information (via response string or\n * user properties) in DISCONNECT or CONNACK packets from the server.\n *\n * See [MQTT5 Request Problem Information](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901053)\n */\n requestProblemInformation?: boolean;\n\n /**\n * Notifies the server of the maximum number of in-flight Qos 1 and 2 messages the client is willing to handle. If\n * omitted, then no limit is requested.\n *\n * See [MQTT5 Receive Maximum](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901049)\n */\n receiveMaximum?: number;\n\n /**\n * Notifies the server of the maximum packet size the client is willing to handle. If\n * omitted, then no limit beyond the natural limits of MQTT packet size is requested.\n *\n * See [MQTT5 Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901050)\n */\n maximumPacketSizeBytes?: number;\n\n /**\n * A time interval, in seconds, that the server should wait (for a session reconnection) before sending the\n * will message associated with the connection's session. If omitted, the server will send the will when the\n * associated session is destroyed. If the session is destroyed before a will delay interval has elapsed, then\n * the will must be sent at the time of session destruction.\n *\n * See [MQTT5 Will Delay Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901062)\n */\n willDelayIntervalSeconds?: number;\n\n /**\n * The definition of a message to be published when the connection's session is destroyed by the server or when\n * the will delay interval has elapsed, whichever comes first. If undefined, then nothing will be sent.\n *\n * See [MQTT5 Will](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901040)\n */\n will?: PublishPacket;\n\n /**\n * Set of MQTT5 user properties included with the packet.\n *\n * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901054)\n */\n userProperties?: Array;\n}\n\n/**\n * Data model of an [MQTT5 CONNACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901074) packet.\n */\nexport interface ConnackPacket extends IPacket {\n\n /**\n * True if the client rejoined an existing session on the server, false otherwise.\n *\n * See [MQTT5 Session Present](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901078)\n */\n sessionPresent : boolean;\n\n /**\n * Indicates either success or the reason for failure for the connection attempt.\n *\n * See [MQTT5 Connect Reason Code](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901079)\n */\n reasonCode : ConnectReasonCode;\n\n /**\n * A time interval, in seconds, that the server will persist this connection's MQTT session state\n * for. If present, this value overrides any session expiry specified in the preceding CONNECT packet.\n *\n * See [MQTT5 Session Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901082)\n */\n sessionExpiryInterval?: number;\n\n /**\n * The maximum amount of in-flight QoS 1 or 2 messages that the server is willing to handle at once. If omitted,\n * the limit is based on the valid MQTT packet id space (65535).\n *\n * See [MQTT5 Receive Maximum](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901083)\n */\n receiveMaximum?: number;\n\n /**\n * The maximum message delivery quality of service that the server will allow on this connection.\n *\n * See [MQTT5 Maximum QoS](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901084)\n */\n maximumQos?: QoS;\n\n /**\n * Indicates whether the server supports retained messages. If undefined, retained messages are\n * supported.\n *\n * See [MQTT5 Retain Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901085)\n */\n retainAvailable?: boolean;\n\n /**\n * Specifies the maximum packet size, in bytes, that the server is willing to accept. If undefined, there\n * is no limit beyond what is imposed by the MQTT spec itself.\n *\n * See [MQTT5 Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901086)\n */\n maximumPacketSize?: number;\n\n /**\n * Specifies a client identifier assigned to this connection by the server. Only valid when the client id of\n * the preceding CONNECT packet was left empty.\n *\n * See [MQTT5 Assigned Client Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901087)\n */\n assignedClientIdentifier?: string;\n\n /**\n * Specifies the maximum topic alias value that the server will accept from the client.\n *\n * See [MQTT5 Topic Alias Maximum](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901088)\n */\n topicAliasMaximum?: number;\n\n /**\n * Additional diagnostic information about the result of the connection attempt.\n *\n * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901089)\n */\n reasonString?: string;\n\n /**\n * Indicates whether the server supports wildcard subscriptions. If undefined, wildcard subscriptions\n * are supported.\n *\n * See [MQTT5 Wildcard Subscriptions Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901091)\n */\n wildcardSubscriptionsAvailable?: boolean;\n\n /**\n * Indicates whether the server supports subscription identifiers. If undefined, subscription identifiers\n * are supported.\n *\n * See [MQTT5 Subscription Identifiers Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901092)\n */\n subscriptionIdentifiersAvailable?: boolean;\n\n /**\n * Indicates whether the server supports shared subscription topic filters. If undefined, shared subscriptions\n * are supported.\n *\n * See [MQTT5 Shared Subscriptions Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901093)\n */\n sharedSubscriptionsAvailable?: boolean;\n\n /**\n * Server-requested override of the keep alive interval, in seconds. If undefined, the keep alive value sent\n * by the client should be used.\n *\n * See [MQTT5 Server Keep Alive](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901094)\n */\n serverKeepAlive?: number;\n\n /**\n * A value that can be used in the creation of a response topic associated with this connection. MQTT5-based\n * request/response is outside the purview of the MQTT5 spec and this client.\n *\n * See [MQTT5 Response Information](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901095)\n */\n responseInformation?: string;\n\n /**\n * Property indicating an alternate server that the client may temporarily or permanently attempt\n * to connect to instead of the configured endpoint. Will only be set if the reason code indicates another\n * server may be used (ServerMoved, UseAnotherServer).\n *\n * See [MQTT5 Server Reference](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901096)\n */\n serverReference?: string;\n\n /**\n * Set of MQTT5 user properties included with the packet.\n *\n * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901090)\n */\n userProperties?: Array;\n}\n\n/**\n * Data model of an [MQTT5 DISCONNECT](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901205) packet.\n */\nexport interface DisconnectPacket extends IPacket {\n\n /**\n * Value indicating the reason that the sender is closing the connection\n *\n * See [MQTT5 Disconnect Reason Code](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901208)\n */\n reasonCode: DisconnectReasonCode;\n\n /**\n * Requests a change to the session expiry interval negotiated at connection time as part of the disconnect. Only\n * valid for DISCONNECT packets sent from client to server. It is not valid to attempt to change session expiry\n * from zero to a non-zero value.\n *\n * See [MQTT5 Session Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901211)\n */\n sessionExpiryIntervalSeconds?: number;\n\n /**\n * Additional diagnostic information about the reason that the sender is closing the connection\n *\n * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901212)\n */\n reasonString?: string;\n\n /**\n * Set of MQTT5 user properties included with the packet.\n *\n * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901213)\n */\n userProperties?: Array;\n\n /**\n * Property indicating an alternate server that the client may temporarily or permanently attempt\n * to connect to instead of the configured endpoint. Will only be set if the reason code indicates another\n * server may be used (ServerMoved, UseAnotherServer).\n *\n * See [MQTT5 Server Reference](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901214)\n */\n serverReference?: string;\n}\n\n/**\n * Configures a single subscription within a Subscribe operation\n *\n * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)\n */\nexport interface Subscription {\n /**\n * Topic filter to subscribe to\n *\n * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)\n */\n topicFilter : string;\n\n /**\n * Maximum QoS on which the subscriber will accept publish messages. Negotiated QoS may be different.\n *\n * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)\n */\n qos : QoS;\n\n /**\n * Should the server not send publishes to a client when that client was the one who sent the publish? If\n * undefined, this is assumed to be false.\n *\n * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)\n */\n noLocal? : boolean;\n\n /**\n * Should messages sent due to this subscription keep the retain flag preserved on the message? If undefined,\n * this is assumed to be false.\n *\n * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)\n */\n retainAsPublished?: boolean;\n\n /**\n * Should retained messages on matching topics be sent in reaction to this subscription? If undefined,\n * this is assumed to be RetainHandlingType.SendOnSubscribe.\n *\n * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)\n */\n retainHandlingType?: RetainHandlingType;\n}\n\n/**\n * Data model of an [MQTT5 SUBSCRIBE](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901161) packet.\n */\nexport interface SubscribePacket extends IPacket {\n\n /**\n * List of topic filter subscriptions that the client wishes to listen to\n *\n * See [MQTT5 Subscribe Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901168)\n */\n subscriptions: Array;\n\n /**\n * A positive integer to associate with all subscriptions in this request. Publish packets that match\n * a subscription in this request should include this identifier in the resulting message.\n *\n * See [MQTT5 Subscription Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901166)\n */\n subscriptionIdentifier?: number;\n\n /**\n * Set of MQTT5 user properties included with the packet.\n *\n * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901167)\n */\n userProperties?: Array;\n}\n\n/**\n * Data model of an [MQTT5 SUBACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901171) packet.\n */\nexport interface SubackPacket extends IPacket {\n\n /**\n * A list of reason codes indicating the result of each individual subscription entry in the\n * associated SUBSCRIBE packet.\n *\n * See [MQTT5 Suback Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901178)\n */\n reasonCodes: Array;\n\n /**\n * Additional diagnostic information about the result of the SUBSCRIBE attempt.\n *\n * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901176)\n */\n reasonString?: string;\n\n /**\n * Set of MQTT5 user properties included with the packet.\n *\n * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901177)\n */\n userProperties?: Array;\n}\n\n/**\n * Data model of an [MQTT5 UNSUBSCRIBE](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901179) packet.\n */\nexport interface UnsubscribePacket extends IPacket {\n\n /**\n * List of topic filters that the client wishes to unsubscribe from.\n *\n * See [MQTT5 Unsubscribe Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901185)\n */\n topicFilters: Array;\n\n /**\n * Set of MQTT5 user properties included with the packet.\n *\n * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901184)\n */\n userProperties?: Array;\n}\n\n/**\n * Data model of an [MQTT5 UNSUBACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901187) packet.\n */\nexport interface UnsubackPacket extends IPacket {\n\n /**\n * A list of reason codes indicating the result of unsubscribing from each individual topic filter entry in the\n * associated UNSUBSCRIBE packet.\n *\n * See [MQTT5 Unsuback Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901194)\n */\n reasonCodes: Array;\n\n /**\n * Additional diagnostic information about the result of the UNSUBSCRIBE attempt.\n *\n * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901192)\n */\n reasonString?: string;\n\n /**\n * Set of MQTT5 user properties included with the packet.\n *\n * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901193)\n */\n userProperties?: Array;\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * @packageDocumentation\n */\n\n\n/**\n * Converts payload to Buffer or string regardless of the supplied type\n * @param payload The payload to convert\n * @internal\n */\nexport function normalize_payload(payload: any): Buffer | string {\n if (payload instanceof Buffer) {\n // pass Buffer through\n return payload;\n }\n if (typeof payload === 'string') {\n // pass string through\n return payload;\n }\n if (ArrayBuffer.isView(payload)) {\n // return Buffer with view upon the same bytes (no copy)\n const view = payload as ArrayBufferView;\n return Buffer.from(view.buffer, view.byteOffset, view.byteLength);\n }\n if (payload instanceof ArrayBuffer) {\n // return Buffer with view upon the same bytes (no copy)\n return Buffer.from(payload);\n }\n if (typeof payload === 'object') {\n // Convert Object to JSON string\n return JSON.stringify(payload);\n }\n\n if (!payload) {\n return \"\";\n }\n\n throw new TypeError(\"payload parameter must be a string, object, or DataView.\");\n}\n\n/** @internal */\nexport const DEFAULT_KEEP_ALIVE : number = 1200;\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing miscellaneous platform-related queries\n *\n * @packageDocumentation\n * @module platform\n * @mergeTarget\n */\n\n/**\n * Returns true if this script is running under nodejs\n *\n * @category System\n */\nexport function is_nodejs() {\n return (typeof process === 'object' &&\n typeof process.versions === 'object' &&\n typeof process.versions.node !== 'undefined');\n}\n\n/**\n * Returns true if this script is running in a browser\n *\n * @category System\n */\nexport function is_browser() {\n return !is_nodejs();\n}\n\n/**\n * Returns the package information for aws-crt-nodejs\n *\n * @category System\n */\nexport function package_info() {\n try {\n const pkg = require('../../package.json');\n return pkg;\n }\n catch (err) {\n return {\n name: 'aws-crt-nodejs',\n version: 'UNKNOWN'\n };\n }\n}\n\n/**\n * Returns the AWS CRT version\n *\n * @category System\n */\nexport function crt_version() {\n const pkg = package_info();\n return pkg.version;\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing promise-related utility types and functions\n *\n * @packageDocumentation\n * @module promise\n */\n\n/**\n * Signature for a function that will perform some arbitrary promise-related cleanup task, like removing one or\n * more event listeners from an EventEmitter.\n */\nexport type PromiseCleanupFunctor = () => void;\n\n/**\n * A helper function that takes a promise and creates a wrapper promise that invokes a cleanup function when the inner\n * promise is completed for any reason. The primary use is to remove event listeners related to promise completion\n * when the promise actually completes. This allows us to keep the number of listeners on a CancelController bounded by\n * the number of incomplete promises associated with it. If we didn't clean up, the listener set would grow\n * without limit.\n *\n * For cancellation, this leads to an internal usage pattern that is strongly recommended:\n *\n * ```\n * async doSomethingCancellable(...) : Promise<...> {\n * removeListenerFunctor = undefined;\n *\n * innerPromise = new Promise(async (resolve, reject) => {\n * ...\n *\n * cancelListenerFunction = () => { clean up and reject innerPromise };\n * removeListenerFunctor = cancelController.addListener(cancelListenerFunction);\n *\n * ...\n * }\n *\n * return makeSelfCleaningPromise(innerPromise, removeListenerFunctor);\n * }\n * ```\n *\n * @param promise promise to wrap with automatic cleanup\n * @param cleaner cleaner function to invoke when the promise is completed\n *\n * @return a promise with matching result/err, that invokes the cleaner function on inner promise completion\n */\nexport function makeSelfCleaningPromise(promise: Promise, cleaner? : PromiseCleanupFunctor) : Promise {\n if (!cleaner) {\n return promise;\n }\n\n return promise.finally(() => { cleaner(); });\n}\n\n/**\n * Generic type signature for a promise resolution function\n */\nexport type LiftedResolver = (value : ResultType) => void;\n\n/**\n * Generic type signature for a promise rejection function\n */\nexport type LiftedRejecter = (error? : any) => void;\n\n/**\n * A promise variant that makes the resolve and reject functions available for external invocations.\n *\n * Useful for situations where you want to await for something that might never complete while still allowing\n * the promise to be cancellable.\n *\n * You get around the potentially infinite await by not awaiting at all and instead letting external events trigger\n * resolve and reject (in particular, CancelController).\n */\nexport interface LiftedPromise {\n\n /**\n * The actual promise whose resolve and reject methods have been exposed.\n */\n promise: Promise;\n\n /**\n * Resolve function for the associated promise\n */\n resolve: LiftedResolver;\n\n /**\n * Reject function for the associated promise\n */\n reject: LiftedRejecter;\n}\n\n/**\n * Factory function to create a new LiftedPromise\n *\n * @param promiseBody optional body function to invoke as part of promise creation\n *\n * @return a promise whose resolve and reject methods have been lifted out of the internal body function and made\n * available to external actors\n */\nexport function newLiftedPromise(promiseBody?: (resolve : LiftedResolver, reject : LiftedRejecter) => void) : LiftedPromise {\n let localResolve : LiftedResolver | undefined = undefined;\n let localReject : LiftedRejecter | undefined = undefined;\n\n let promise = new Promise((resolve, reject) => {\n localResolve = resolve;\n localReject = reject;\n });\n\n if (!localResolve || !localReject) {\n // should never happen\n throw new Error(\"Failed to bind resolve and reject when making lifted promise\");\n }\n\n if (promiseBody) {\n promiseBody(localResolve, localReject);\n }\n\n return {\n promise : promise,\n resolve: localResolve,\n reject : localReject\n };\n}\n\n\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n *\n * A module containing miscellaneous types for resource management\n *\n * @packageDocumentation\n * @module resource_safety\n * @mergeTarget\n */\n\n/**\n * If you have a resource that you want typescript to enforce close is implemented\n * and/or you want to use the below 'using' function, then implement this interface.\n *\n * @category System\n */\nexport interface ResourceSafe {\n close(): void;\n}\n\n/**\n * Use this function to create a resource in an async context. This will make sure the\n * resources are cleaned up before returning.\n *\n * Example:\n * ```\n * await using(res = new SomeResource(), async (res) => {\n * res.do_the_thing();\n * });\n * ```\n *\n * @category System\n */\nexport async function using(resource: T, func: (resource: T) => void) {\n try {\n await func(resource);\n } finally {\n resource.close();\n }\n}","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/** @internal */\nexport function set_defined_property(object: any, propertyName: string, value: any) : boolean {\n if (value === undefined || value == null) {\n return false;\n }\n\n object[propertyName] = value;\n\n return true;\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * Browser entry point for AWS IoT SDK.\n * @packageDocumentation\n * @module aws-iot-device-sdk\n * @mergeTarget\n */\n\nimport * as iotidentity from './iotidentity/iotidentityclient';\nimport * as greengrass from './greengrass/discoveryclient';\nimport * as iotjobs from './iotjobs/iotjobsclient';\nimport * as iotshadow from './iotshadow/iotshadowclient';\n\nimport {\n auth,\n http,\n io,\n iot,\n mqtt,\n mqtt5,\n CrtError\n} from 'aws-crt/dist.browser/browser';\n\nexport {\n auth,\n greengrass,\n http,\n io,\n iot,\n iotidentity,\n iotjobs,\n iotshadow,\n mqtt,\n mqtt5,\n CrtError\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * @packageDocumentation\n * @module greengrass\n * @mergeTarget\n */\n\nimport { io, http, CrtError } from 'aws-crt';\nimport { toUtf8 } from '@aws-sdk/util-utf8-browser';\nimport * as model from './model';\nexport { model };\n\n/**\n * @category Greengrass\n */\nexport class DiscoveryError extends Error {\n constructor(message: string, readonly response_code?: number) {\n super(message);\n }\n}\n\n/**\n * Greengrass Discovery Client\n *\n * API Documentation: https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-discover-api.html\n *\n * @category Greengrass\n */\nexport class DiscoveryClient {\n private connection_manager: http.HttpClientConnectionManager;\n private endpoint: string;\n\n /**\n *\n * @param bootstrap The `ClientBootstrap` to use to make an HTTP connection to the Greengrass service\n * @param socket_options `SocketOptions` for HTTP connection to the Greengrass service\n * @param tls_ctx TLS Options for the HTTP connection to Greengrass service\n * @param region Region to send Greengrass discovery requests to (ignored if gg_server_name is set)\n * @param gg_server_name Optional name of greengrass endpoint\n */\n constructor(\n readonly bootstrap: io.ClientBootstrap,\n private socket_options: io.SocketOptions,\n private tls_ctx: io.ClientTlsContext,\n readonly region: string,\n readonly gg_server_name: string = \"\"\n ) {\n //allow user to use special endpoints\n if (this.gg_server_name !== \"\") {\n this.endpoint = this.gg_server_name;\n } else {\n this.endpoint = `greengrass-ats.iot.${region}.amazonaws.com`;\n }\n\n this.connection_manager = new http.HttpClientConnectionManager(\n this.bootstrap,\n this.endpoint,\n io.is_alpn_available() ? 443 : 8443,\n 4,\n 16 * 1024,\n this.socket_options,\n new io.TlsConnectionOptions(this.tls_ctx, this.endpoint, io.is_alpn_available() ? ['x-amzn-http-ca'] : undefined)\n );\n }\n\n /**\n * Performs the discover API call for the supplied Thing, and returns any associated Greengrass\n * groups/cores/connection info.\n *\n * @param thing_name The name of your IoT Thing, as configured in the console for Greengrass\n */\n discover(thing_name: string): Promise {\n return new Promise(async (resolve, reject) => {\n this.connection_manager.acquire()\n .then((connection) => {\n const request = new http.HttpRequest(\n 'GET', `/greengrass/discover/thing/${thing_name}`,\n new http.HttpHeaders([['host', this.endpoint]]));\n const stream = connection.request(request);\n let response = '';\n stream.on('response', (status_code, headers) => {\n if (status_code != 200) {\n reject(new DiscoveryError(`Discovery failed (headers: ${headers})`, status_code));\n }\n });\n stream.on('data', (body_data) => {\n response += toUtf8(new Uint8Array(body_data));\n });\n stream.on('end', () => {\n const json = JSON.parse(response);\n const discover_response = model.DiscoverResponse.from_json(json);\n resolve(discover_response);\n });\n stream.on('error', (error) => {\n reject(new DiscoveryError(error.toString()));\n });\n stream.activate();\n })\n .catch((reason) => {\n reject(new CrtError(reason))\n });\n });\n }\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\n/**\n * @packageDocumentation\n * @module greengrass\n */\n\nimport { isArray } from 'util';\n\n/**\n * Describes a Greengrass core endpoint that a device can connect to\n *\n * API Documentation: https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-discover-api.html\n *\n * @category Greengrass\n */\nexport class ConnectivityInfo {\n private constructor(\n /** Connectivity entry identifier */\n readonly id: string,\n /** Endpoint address */\n readonly host_address: string,\n /** Endpoint port */\n readonly port: number,\n /** Additional user-configurable metadata about the connectivity entry */\n readonly metadata?: any) {\n\n }\n\n /** @internal */\n static from_json(json: any) {\n return new ConnectivityInfo(\n json.Id,\n json.HostAddress,\n json.PortNumber,\n json.Metadata\n )\n }\n}\n\n/**\n * Describes a Greengrass Core\n *\n * API Documentation: https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-discover-api.html\n *\n * @category Greengrass\n */\nexport class GGCore {\n private constructor(\n /** resource name of the IoT thing associated with a Greengrass core */\n readonly thing_arn: string,\n /** list of distinct ways to connect to the associated Greengrass core */\n readonly connectivity: ConnectivityInfo[]) {\n\n }\n\n /** @internal */\n static from_json(json: any) {\n const connectivity: ConnectivityInfo[] = [];\n if (json.Connectivity && isArray(json.Connectivity)) {\n json.Connectivity.forEach((payload: any) => {\n connectivity.push(ConnectivityInfo.from_json(payload));\n });\n }\n return new GGCore(\n json.thingArn,\n connectivity\n );\n }\n}\n\n/**\n * Describes a Greengrass group\n *\n * API Documentation: https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-discover-api.html\n *\n * @category Greengrass\n */\nexport class GGGroup {\n private constructor(\n /** identifier for the Greengrass group */\n readonly gg_group_id: string,\n /** List of Greengrass cores associated with the group */\n readonly cores: GGCore[] = [],\n /** List of certificate authorities (in PEM format) associated with the Greengrass group */\n readonly certificate_authorities: string[] = []) {\n\n }\n\n /** @internal */\n static from_json(json: any) {\n const cores: GGCore[] = [];\n if (json.Cores && isArray(json.Cores)) {\n json.Cores.forEach((payload: any) => {\n cores.push(GGCore.from_json(payload));\n });\n }\n return new GGGroup(\n json.GGGroupId,\n cores,\n json.CAs\n )\n }\n}\n\n/**\n * Response returned from a {@link DiscoveryClient.discover} call\n *\n * API Documentation: https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-discover-api.html\n *\n * @category Greengrass\n */\nexport class DiscoverResponse {\n private constructor(\n /** List of discovered Greengrass groups */\n readonly gg_groups: GGGroup[] = []) {\n }\n\n /** @internal */\n static from_json(json: any) {\n const groups: GGGroup[] = [];\n if (json.GGGroups && isArray(json.GGGroups)) {\n json.GGGroups.forEach((payload: any) => {\n groups.push(GGGroup.from_json(payload));\n });\n }\n return new DiscoverResponse(groups);\n }\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n *\n * This file is generated\n */\n\n/**\n * @packageDocumentation\n * @module identity\n */\n\nimport * as model from \"./model\";\nimport { mqtt, mqtt5 } from \"aws-crt\";\nimport { toUtf8 } from \"@aws-sdk/util-utf8-browser\"\nimport * as service_client_mqtt_adapter from \"../service_client_mqtt_adapter\";\n\nexport { model };\n\n/**\n * Error subclass for IotIdentity service errors\n *\n * @category IotIdentity\n */\nexport class IotIdentityError extends Error {\n\n public prototype: any; // Hack to get around TS not knowing about prototypes\n\n constructor(message?: string, readonly payload?: mqtt.Payload) {\n // 'Error' breaks JS prototype chain when instantiated\n super(message);\n\n // restore prototype chain\n const myProto = new.target.prototype;\n if (Object.setPrototypeOf) { Object.setPrototypeOf(this, myProto); }\n else { this.prototype = myProto; }\n }\n}\n\n/**\n * An AWS IoT service that assists with provisioning a device and installing unique client certificates on it\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html\n *\n * @category IotIdentity\n */\nexport class IotIdentityClient {\n\n // @ts-ignore\n private mqttAdapter: service_client_mqtt_adapter.IServiceClientMqttAdapter;\n\n private static INVALID_PAYLOAD_PARSING_ERROR = \"Invalid/unknown error parsing payload into response\";\n\n private static createClientError(err: any, payload: ArrayBuffer) : IotIdentityError {\n if (err instanceof Error) {\n return new IotIdentityError(err.message, payload);\n } else {\n return new IotIdentityError( IotIdentityClient.INVALID_PAYLOAD_PARSING_ERROR, payload);\n }\n }\n\n constructor(connection?: mqtt.MqttClientConnection) {\n if (connection !== undefined) {\n this.mqttAdapter = new service_client_mqtt_adapter.ServiceClientMqtt311Adapter(connection);\n }\n }\n\n /**\n * Creates a new IotIdentityClient that uses the SDK Mqtt5 client internally.\n *\n * The pre-existing constructor that is bound to the MQTT311 client makes this awkward since we\n * must support\n *\n * ```\n * new IotIdentityClient(mqtt311connection);\n * ```\n *\n * for backwards compatibility, but still want to be able to inject an MQTT5 client as well.\n *\n * @param client the MQTT5 client to use with this service client\n *\n * @returns a new IotIdentityClient instance\n */\n static newFromMqtt5Client(client: mqtt5.Mqtt5Client) : IotIdentityClient {\n let serviceClient: IotIdentityClient = new IotIdentityClient();\n serviceClient.mqttAdapter = new service_client_mqtt_adapter.ServiceClientMqtt5Adapter(client);\n\n return serviceClient;\n }\n\n /**\n * Creates new keys and a certificate. AWS IoT provides client certificates that are signed by the Amazon Root certificate authority (CA). The new certificate has a PENDING_ACTIVATION status. When you call RegisterThing to provision a thing with this certificate, the certificate status changes to ACTIVE or INACTIVE as described in the template.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotIdentity\n */\n async publishCreateKeysAndCertificate(\n request: model.CreateKeysAndCertificateRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/certificates/create/json\";\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Subscribes to the accepted topic of the CreateKeysAndCertificate operation.\n *\n *\n * subscribeToCreateKeysAndCertificateAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotIdentity\n */\n async subscribeToCreateKeysAndCertificateAccepted(\n request: model.CreateKeysAndCertificateSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotIdentityError, response?: model.CreateKeysAndCertificateResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/certificates/create/json/accepted\";\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.CreateKeysAndCertificateResponse | undefined;\n let error: IotIdentityError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.CreateKeysAndCertificateResponse;\n } catch (err) {\n error = IotIdentityClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic of the CreateKeysAndCertificate operation.\n *\n *\n * subscribeToCreateKeysAndCertificateRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotIdentity\n */\n async subscribeToCreateKeysAndCertificateRejected(\n request: model.CreateKeysAndCertificateSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotIdentityError, response?: model.ErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/certificates/create/json/rejected\";\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ErrorResponse | undefined;\n let error: IotIdentityError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ErrorResponse;\n } catch (err) {\n error = IotIdentityClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic of the RegisterThing operation.\n *\n *\n * subscribeToRegisterThingRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotIdentity\n */\n async subscribeToRegisterThingRejected(\n request: model.RegisterThingSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotIdentityError, response?: model.ErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/provisioning-templates/{templateName}/provision/json/rejected\";\n topic = topic.replace(\"{templateName}\", request.templateName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ErrorResponse | undefined;\n let error: IotIdentityError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ErrorResponse;\n } catch (err) {\n error = IotIdentityClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the accepted topic of the CreateCertificateFromCsr operation.\n *\n *\n * subscribeToCreateCertificateFromCsrAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotIdentity\n */\n async subscribeToCreateCertificateFromCsrAccepted(\n request: model.CreateCertificateFromCsrSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotIdentityError, response?: model.CreateCertificateFromCsrResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/certificates/create-from-csr/json/accepted\";\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.CreateCertificateFromCsrResponse | undefined;\n let error: IotIdentityError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.CreateCertificateFromCsrResponse;\n } catch (err) {\n error = IotIdentityClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Provisions an AWS IoT thing using a pre-defined template.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotIdentity\n */\n async publishRegisterThing(\n request: model.RegisterThingRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/provisioning-templates/{templateName}/provision/json\";\n topic = topic.replace(\"{templateName}\", request.templateName);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Subscribes to the accepted topic of the RegisterThing operation.\n *\n *\n * subscribeToRegisterThingAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotIdentity\n */\n async subscribeToRegisterThingAccepted(\n request: model.RegisterThingSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotIdentityError, response?: model.RegisterThingResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/provisioning-templates/{templateName}/provision/json/accepted\";\n topic = topic.replace(\"{templateName}\", request.templateName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.RegisterThingResponse | undefined;\n let error: IotIdentityError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.RegisterThingResponse;\n } catch (err) {\n error = IotIdentityClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic of the CreateCertificateFromCsr operation.\n *\n *\n * subscribeToCreateCertificateFromCsrRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotIdentity\n */\n async subscribeToCreateCertificateFromCsrRejected(\n request: model.CreateCertificateFromCsrSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotIdentityError, response?: model.ErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/certificates/create-from-csr/json/rejected\";\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ErrorResponse | undefined;\n let error: IotIdentityError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ErrorResponse;\n } catch (err) {\n error = IotIdentityClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Creates a certificate from a certificate signing request (CSR). AWS IoT provides client certificates that are signed by the Amazon Root certificate authority (CA). The new certificate has a PENDING_ACTIVATION status. When you call RegisterThing to provision a thing with this certificate, the certificate status changes to ACTIVE or INACTIVE as described in the template.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotIdentity\n */\n async publishCreateCertificateFromCsr(\n request: model.CreateCertificateFromCsrRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/certificates/create-from-csr/json\";\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n *\n * This file is generated\n */\n\n/**\n * @packageDocumentation\n * @module jobs\n */\n\nimport * as model from \"./model\";\nimport { mqtt, mqtt5 } from \"aws-crt\";\nimport { toUtf8 } from \"@aws-sdk/util-utf8-browser\"\nimport * as service_client_mqtt_adapter from \"../service_client_mqtt_adapter\";\n\nexport { model };\n\n/**\n * Error subclass for IotJobs service errors\n *\n * @category IotJobs\n */\nexport class IotJobsError extends Error {\n\n public prototype: any; // Hack to get around TS not knowing about prototypes\n\n constructor(message?: string, readonly payload?: mqtt.Payload) {\n // 'Error' breaks JS prototype chain when instantiated\n super(message);\n\n // restore prototype chain\n const myProto = new.target.prototype;\n if (Object.setPrototypeOf) { Object.setPrototypeOf(this, myProto); }\n else { this.prototype = myProto; }\n }\n}\n\n/**\n * The AWS IoT jobs service can be used to define a set of remote operations that are sent to and executed on one or more devices connected to AWS IoT.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#jobs-mqtt-api\n *\n * @category IotJobs\n */\nexport class IotJobsClient {\n\n // @ts-ignore\n private mqttAdapter: service_client_mqtt_adapter.IServiceClientMqttAdapter;\n\n private static INVALID_PAYLOAD_PARSING_ERROR = \"Invalid/unknown error parsing payload into response\";\n\n private static createClientError(err: any, payload: ArrayBuffer) : IotJobsError {\n if (err instanceof Error) {\n return new IotJobsError(err.message, payload);\n } else {\n return new IotJobsError( IotJobsClient.INVALID_PAYLOAD_PARSING_ERROR, payload);\n }\n }\n\n constructor(connection?: mqtt.MqttClientConnection) {\n if (connection !== undefined) {\n this.mqttAdapter = new service_client_mqtt_adapter.ServiceClientMqtt311Adapter(connection);\n }\n }\n\n /**\n * Creates a new IotJobsClient that uses the SDK Mqtt5 client internally.\n *\n * The pre-existing constructor that is bound to the MQTT311 client makes this awkward since we\n * must support\n *\n * ```\n * new IotJobsClient(mqtt311connection);\n * ```\n *\n * for backwards compatibility, but still want to be able to inject an MQTT5 client as well.\n *\n * @param client the MQTT5 client to use with this service client\n *\n * @returns a new IotJobsClient instance\n */\n static newFromMqtt5Client(client: mqtt5.Mqtt5Client) : IotJobsClient {\n let serviceClient: IotJobsClient = new IotJobsClient();\n serviceClient.mqttAdapter = new service_client_mqtt_adapter.ServiceClientMqtt5Adapter(client);\n\n return serviceClient;\n }\n\n /**\n * Subscribes to JobExecutionsChanged notifications for a given IoT thing.\n *\n *\n * subscribeToJobExecutionsChangedEvents may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-jobexecutionschanged\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToJobExecutionsChangedEvents(\n request: model.JobExecutionsChangedSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.JobExecutionsChangedEvent) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/notify\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.JobExecutionsChangedEvent | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.JobExecutionsChangedEvent;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the accepted topic for the StartNextPendingJobExecution operation\n *\n *\n * subscribeToStartNextPendingJobExecutionAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-startnextpendingjobexecution\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToStartNextPendingJobExecutionAccepted(\n request: model.StartNextPendingJobExecutionSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.StartNextJobExecutionResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/start-next/accepted\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.StartNextJobExecutionResponse | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.StartNextJobExecutionResponse;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic for the DescribeJobExecution operation\n *\n *\n * subscribeToDescribeJobExecutionRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-describejobexecution\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToDescribeJobExecutionRejected(\n request: model.DescribeJobExecutionSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.RejectedErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/{jobId}/get/rejected\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{jobId}\", request.jobId);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.RejectedErrorResponse | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.RejectedErrorResponse;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * \n *\n *\n * subscribeToNextJobExecutionChangedEvents may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-nextjobexecutionchanged\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToNextJobExecutionChangedEvents(\n request: model.NextJobExecutionChangedSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.NextJobExecutionChangedEvent) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/notify-next\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.NextJobExecutionChangedEvent | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.NextJobExecutionChangedEvent;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic for the UpdateJobExecution operation\n *\n *\n * subscribeToUpdateJobExecutionRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-updatejobexecution\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToUpdateJobExecutionRejected(\n request: model.UpdateJobExecutionSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.RejectedErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/{jobId}/update/rejected\";\n topic = topic.replace(\"{jobId}\", request.jobId);\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.RejectedErrorResponse | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.RejectedErrorResponse;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the accepted topic for the UpdateJobExecution operation\n *\n *\n * subscribeToUpdateJobExecutionAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-updatejobexecution\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToUpdateJobExecutionAccepted(\n request: model.UpdateJobExecutionSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.UpdateJobExecutionResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/{jobId}/update/accepted\";\n topic = topic.replace(\"{jobId}\", request.jobId);\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.UpdateJobExecutionResponse | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.UpdateJobExecutionResponse;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Updates the status of a job execution. You can optionally create a step timer by setting a value for the stepTimeoutInMinutes property. If you don't update the value of this property by running UpdateJobExecution again, the job execution times out when the step timer expires.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-updatejobexecution\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotJobs\n */\n async publishUpdateJobExecution(\n request: model.UpdateJobExecutionRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/{jobId}/update\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{jobId}\", request.jobId);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Subscribes to the accepted topic for the DescribeJobExecution operation\n *\n *\n * subscribeToDescribeJobExecutionAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-describejobexecution\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToDescribeJobExecutionAccepted(\n request: model.DescribeJobExecutionSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.DescribeJobExecutionResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/{jobId}/get/accepted\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{jobId}\", request.jobId);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.DescribeJobExecutionResponse | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.DescribeJobExecutionResponse;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Gets the list of all jobs for a thing that are not in a terminal state.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-getpendingjobexecutions\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotJobs\n */\n async publishGetPendingJobExecutions(\n request: model.GetPendingJobExecutionsRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/get\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Subscribes to the accepted topic for the GetPendingJobsExecutions operation\n *\n *\n * subscribeToGetPendingJobExecutionsAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-getpendingjobexecutions\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToGetPendingJobExecutionsAccepted(\n request: model.GetPendingJobExecutionsSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.GetPendingJobExecutionsResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/get/accepted\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.GetPendingJobExecutionsResponse | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.GetPendingJobExecutionsResponse;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic for the StartNextPendingJobExecution operation\n *\n *\n * subscribeToStartNextPendingJobExecutionRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-startnextpendingjobexecution\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToStartNextPendingJobExecutionRejected(\n request: model.StartNextPendingJobExecutionSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.RejectedErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/start-next/rejected\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.RejectedErrorResponse | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.RejectedErrorResponse;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic for the GetPendingJobsExecutions operation\n *\n *\n * subscribeToGetPendingJobExecutionsRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-getpendingjobexecutions\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotJobs\n */\n async subscribeToGetPendingJobExecutionsRejected(\n request: model.GetPendingJobExecutionsSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotJobsError, response?: model.RejectedErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/get/rejected\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.RejectedErrorResponse | undefined;\n let error: IotJobsError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.RejectedErrorResponse;\n } catch (err) {\n error = IotJobsClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Gets and starts the next pending job execution for a thing (status IN_PROGRESS or QUEUED).\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-startnextpendingjobexecution\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotJobs\n */\n async publishStartNextPendingJobExecution(\n request: model.StartNextPendingJobExecutionRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/start-next\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Gets detailed information about a job execution.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/jobs-api.html#mqtt-describejobexecution\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotJobs\n */\n async publishDescribeJobExecution(\n request: model.DescribeJobExecutionRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/jobs/{jobId}/get\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{jobId}\", request.jobId);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n *\n * This file is generated\n */\n\n/**\n * A value indicating the kind of error encountered while processing an AWS IoT Jobs request\n *\n * @category IotJobs\n */\nexport enum RejectedErrorCode {\n\n UNKNOWN_ENUM_VALUE = \"UNKNOWN_ENUM_VALUE\",\n\n /**\n * The request was sent to a topic in the AWS IoT Jobs namespace that does not map to any API.\n */\n INVALID_TOPIC = \"InvalidTopic\",\n\n /**\n * An update attempted to change the job execution to a state that is invalid because of the job execution's current state. In this case, the body of the error message also contains the executionState field.\n */\n INVALID_STATE_TRANSITION = \"InvalidStateTransition\",\n\n /**\n * The JobExecution specified by the request topic does not exist.\n */\n RESOURCE_NOT_FOUND = \"ResourceNotFound\",\n\n /**\n * The contents of the request were invalid. The message contains details about the error.\n */\n INVALID_REQUEST = \"InvalidRequest\",\n\n /**\n * The request was throttled.\n */\n REQUEST_THROTTLED = \"RequestThrottled\",\n\n /**\n * There was an internal error during the processing of the request.\n */\n INTERNAL_ERROR = \"InternalError\",\n\n /**\n * Occurs when a command to describe a job is performed on a job that is in a terminal state.\n */\n TERMINAL_STATE_REACHED = \"TerminalStateReached\",\n\n /**\n * The contents of the request could not be interpreted as valid UTF-8-encoded JSON.\n */\n INVALID_JSON = \"InvalidJson\",\n\n /**\n * The expected version specified in the request does not match the version of the job execution in the AWS IoT Jobs service. In this case, the body of the error message also contains the executionState field.\n */\n VERSION_MISMATCH = \"VersionMismatch\",\n}\n\n/**\n * The status of the job execution.\n *\n * @category IotJobs\n */\nexport enum JobStatus {\n\n UNKNOWN_ENUM_VALUE = \"UNKNOWN_ENUM_VALUE\",\n\n IN_PROGRESS = \"IN_PROGRESS\",\n\n FAILED = \"FAILED\",\n\n QUEUED = \"QUEUED\",\n\n TIMED_OUT = \"TIMED_OUT\",\n\n SUCCEEDED = \"SUCCEEDED\",\n\n CANCELED = \"CANCELED\",\n\n REJECTED = \"REJECTED\",\n\n REMOVED = \"REMOVED\",\n}\n\n\n/**\n * Data needed to make a DescribeJobExecution request.\n *\n * @category IotJobs\n */\nexport interface DescribeJobExecutionRequest {\n\n /**\n * Optional. A number that identifies a job execution on a device. If not specified, the latest job execution is returned.\n *\n */\n executionNumber?: number;\n\n /**\n * The name of the thing associated with the device.\n *\n */\n thingName: string;\n\n /**\n * Optional. Unless set to false, the response contains the job document. The default is true.\n *\n */\n includeJobDocument?: boolean;\n\n /**\n * The unique identifier assigned to this job when it was created. Or use $next to return the next pending job execution for a thing (status IN_PROGRESS or QUEUED). In this case, any job executions with status IN_PROGRESS are returned first. Job executions are returned in the order in which they were created.\n *\n */\n jobId: string;\n\n /**\n * An opaque string used to correlate requests and responses. Enter an arbitrary value here and it is reflected in the response.\n *\n */\n clientToken?: string;\n\n}\n\n/**\n * Response payload to a DescribeJobExecution request.\n *\n * @category IotJobs\n */\nexport interface DescribeJobExecutionResponse {\n\n /**\n * Contains data about a job execution.\n *\n */\n execution?: JobExecutionData;\n\n /**\n * A client token used to correlate requests and responses.\n *\n */\n clientToken?: string;\n\n /**\n * The time when the message was sent.\n *\n */\n timestamp?: Date;\n\n}\n\n/**\n * Data needed to subscribe to DescribeJobExecution responses.\n *\n * @category IotJobs\n */\nexport interface DescribeJobExecutionSubscriptionRequest {\n\n /**\n * Name of the IoT Thing that you want to subscribe to DescribeJobExecution response events for.\n *\n */\n thingName: string;\n\n /**\n * Job ID that you want to subscribe to DescribeJobExecution response events for.\n *\n */\n jobId: string;\n\n}\n\n/**\n * Data needed to make a GetPendingJobExecutions request.\n *\n * @category IotJobs\n */\nexport interface GetPendingJobExecutionsRequest {\n\n /**\n * IoT Thing the request is relative to.\n *\n */\n thingName: string;\n\n /**\n * Optional. A client token used to correlate requests and responses. Enter an arbitrary value here and it is reflected in the response.\n *\n */\n clientToken?: string;\n\n}\n\n/**\n * Response payload to a GetPendingJobExecutions request.\n *\n * @category IotJobs\n */\nexport interface GetPendingJobExecutionsResponse {\n\n /**\n * A list of JobExecutionSummary objects with status QUEUED.\n *\n */\n queuedJobs?: Array;\n\n /**\n * The time when the message was sent.\n *\n */\n timestamp?: Date;\n\n /**\n * A client token used to correlate requests and responses.\n *\n */\n clientToken?: string;\n\n /**\n * A list of JobExecutionSummary objects with status IN_PROGRESS.\n *\n */\n inProgressJobs?: Array;\n\n}\n\n/**\n * Data needed to subscribe to GetPendingJobExecutions responses.\n *\n * @category IotJobs\n */\nexport interface GetPendingJobExecutionsSubscriptionRequest {\n\n /**\n * Name of the IoT Thing that you want to subscribe to GetPendingJobExecutions response events for.\n *\n */\n thingName: string;\n\n}\n\n/**\n * Data about a job execution.\n *\n * @category IotJobs\n */\nexport interface JobExecutionData {\n\n /**\n * The unique identifier you assigned to this job when it was created.\n *\n */\n jobId?: string;\n\n /**\n * The content of the job document.\n *\n */\n jobDocument?: object;\n\n /**\n * The status of the job execution. Can be one of: QUEUED, IN_PROGRESS, FAILED, SUCCEEDED, CANCELED, TIMED_OUT, REJECTED, or REMOVED.\n *\n */\n status?: JobStatus;\n\n /**\n * The version of the job execution. Job execution versions are incremented each time they are updated by a device.\n *\n */\n versionNumber?: number;\n\n /**\n * The time when the job execution was enqueued.\n *\n */\n queuedAt?: Date;\n\n /**\n * The name of the thing that is executing the job.\n *\n */\n thingName?: string;\n\n /**\n * A number that identifies a job execution on a device. It can be used later in commands that return or update job execution information.\n *\n */\n executionNumber?: number;\n\n /**\n * A collection of name-value pairs that describe the status of the job execution.\n *\n */\n statusDetails?: {[key: string]: string};\n\n /**\n * The time when the job execution started. \n *\n */\n lastUpdatedAt?: Date;\n\n /**\n * The time when the job execution started.\n *\n */\n startedAt?: Date;\n\n}\n\n/**\n * Data about the state of a job execution.\n *\n * @category IotJobs\n */\nexport interface JobExecutionState {\n\n /**\n * A collection of name-value pairs that describe the status of the job execution.\n *\n */\n statusDetails?: {[key: string]: string};\n\n /**\n * The version of the job execution. Job execution versions are incremented each time they are updated by a device.\n *\n */\n versionNumber?: number;\n\n /**\n * The status of the job execution. Can be one of: QUEUED, IN_PROGRESS, FAILED, SUCCEEDED, CANCELED, TIMED_OUT, REJECTED, or REMOVED.\n *\n */\n status?: JobStatus;\n\n}\n\n/**\n * Contains a subset of information about a job execution.\n *\n * @category IotJobs\n */\nexport interface JobExecutionSummary {\n\n /**\n * The time when the job execution was last updated.\n *\n */\n lastUpdatedAt?: Date;\n\n /**\n * A number that identifies a job execution on a device.\n *\n */\n executionNumber?: number;\n\n /**\n * The time when the job execution started.\n *\n */\n startedAt?: Date;\n\n /**\n * The version of the job execution. Job execution versions are incremented each time the AWS IoT Jobs service receives an update from a device.\n *\n */\n versionNumber?: number;\n\n /**\n * The unique identifier you assigned to this job when it was created.\n *\n */\n jobId?: string;\n\n /**\n * The time when the job execution was enqueued.\n *\n */\n queuedAt?: Date;\n\n}\n\n/**\n * Sent whenever a job execution is added to or removed from the list of pending job executions for a thing.\n *\n * @category IotJobs\n */\nexport interface JobExecutionsChangedEvent {\n\n /**\n * Map from JobStatus to a list of Jobs transitioning to that status.\n *\n */\n jobs?: {[key: string]: Array};\n\n /**\n * The time when the message was sent.\n *\n */\n timestamp?: Date;\n\n}\n\n/**\n * Data needed to subscribe to JobExecutionsChanged events.\n *\n * @category IotJobs\n */\nexport interface JobExecutionsChangedSubscriptionRequest {\n\n /**\n * Name of the IoT Thing that you want to subscribe to JobExecutionsChanged events for.\n *\n */\n thingName: string;\n\n}\n\n/**\n * Sent whenever there is a change to which job execution is next on the list of pending job executions for a thing, as defined for DescribeJobExecution with jobId $next. This message is not sent when the next job's execution details change, only when the next job that would be returned by DescribeJobExecution with jobId $next has changed.\n *\n * @category IotJobs\n */\nexport interface NextJobExecutionChangedEvent {\n\n /**\n * Contains data about a job execution.\n *\n */\n execution?: JobExecutionData;\n\n /**\n * The time when the message was sent.\n *\n */\n timestamp?: Date;\n\n}\n\n/**\n * Data needed to subscribe to NextJobExecutionChanged events.\n *\n * @category IotJobs\n */\nexport interface NextJobExecutionChangedSubscriptionRequest {\n\n /**\n * Name of the IoT Thing that you want to subscribe to NextJobExecutionChanged events for.\n *\n */\n thingName: string;\n\n}\n\n/**\n * Response document containing details about a failed request.\n *\n * @category IotJobs\n */\nexport interface RejectedErrorResponse {\n\n /**\n * The date and time the response was generated by AWS IoT.\n *\n */\n timestamp?: Date;\n\n /**\n * Indicates the type of error.\n *\n */\n code?: RejectedErrorCode;\n\n /**\n * A text message that provides additional information.\n *\n */\n message?: string;\n\n /**\n * Opaque token that can correlate this response to the original request.\n *\n */\n clientToken?: string;\n\n /**\n * A JobExecutionState object. This field is included only when the code field has the value InvalidStateTransition or VersionMismatch.\n *\n */\n executionState?: JobExecutionState;\n\n}\n\n/**\n * Response payload to a StartNextJobExecution request.\n *\n * @category IotJobs\n */\nexport interface StartNextJobExecutionResponse {\n\n /**\n * A client token used to correlate requests and responses.\n *\n */\n clientToken?: string;\n\n /**\n * The time when the message was sent to the device. \n *\n */\n timestamp?: Date;\n\n /**\n * Contains data about a job execution.\n *\n */\n execution?: JobExecutionData;\n\n}\n\n/**\n * Data needed to make a StartNextPendingJobExecution request.\n *\n * @category IotJobs\n */\nexport interface StartNextPendingJobExecutionRequest {\n\n /**\n * IoT Thing the request is relative to.\n *\n */\n thingName: string;\n\n /**\n * Specifies the amount of time this device has to finish execution of this job.\n *\n */\n stepTimeoutInMinutes?: number;\n\n /**\n * Optional. A client token used to correlate requests and responses. Enter an arbitrary value here and it is reflected in the response.\n *\n */\n clientToken?: string;\n\n /**\n * A collection of name-value pairs that describe the status of the job execution. If not specified, the statusDetails are unchanged.\n *\n */\n statusDetails?: {[key: string]: string};\n\n}\n\n/**\n * Data needed to subscribe to StartNextPendingJobExecution responses.\n *\n * @category IotJobs\n */\nexport interface StartNextPendingJobExecutionSubscriptionRequest {\n\n /**\n * Name of the IoT Thing that you want to subscribe to StartNextPendingJobExecution response events for.\n *\n */\n thingName: string;\n\n}\n\n/**\n * Data needed to make an UpdateJobExecution request.\n *\n * @category IotJobs\n */\nexport interface UpdateJobExecutionRequest {\n\n /**\n * The name of the thing associated with the device. \n *\n */\n thingName: string;\n\n /**\n * Optional. A number that identifies a job execution on a device. If not specified, the latest job execution is used.\n *\n */\n executionNumber?: number;\n\n /**\n * A collection of name-value pairs that describe the status of the job execution. If not specified, the statusDetails are unchanged.\n *\n */\n statusDetails?: {[key: string]: string};\n\n /**\n * Optional. When included and set to true, the response contains the JobExecutionState field. The default is false.\n *\n */\n includeJobExecutionState?: boolean;\n\n /**\n * The unique identifier assigned to this job when it was created.\n *\n */\n jobId: string;\n\n /**\n * The expected current version of the job execution. Each time you update the job execution, its version is incremented. If the version of the job execution stored in the AWS IoT Jobs service does not match, the update is rejected with a VersionMismatch error, and an ErrorResponse that contains the current job execution status data is returned.\n *\n */\n expectedVersion?: number;\n\n /**\n * Optional. When included and set to true, the response contains the JobDocument. The default is false.\n *\n */\n includeJobDocument?: boolean;\n\n /**\n * The new status for the job execution (IN_PROGRESS, FAILED, SUCCEEDED, or REJECTED). This must be specified on every update.\n *\n */\n status?: JobStatus;\n\n /**\n * Specifies the amount of time this device has to finish execution of this job. If the job execution status is not set to a terminal state before this timer expires, or before the timer is reset (by again calling UpdateJobExecution, setting the status to IN_PROGRESS and specifying a new timeout value in this field) the job execution status is set to TIMED_OUT. Setting or resetting this timeout has no effect on the job execution timeout that might have been specified when the job was created (by using CreateJob with the timeoutConfig).\n *\n */\n stepTimeoutInMinutes?: number;\n\n /**\n * A client token used to correlate requests and responses. Enter an arbitrary value here and it is reflected in the response.\n *\n */\n clientToken?: string;\n\n}\n\n/**\n * Response payload to an UpdateJobExecution request.\n *\n * @category IotJobs\n */\nexport interface UpdateJobExecutionResponse {\n\n /**\n * A client token used to correlate requests and responses.\n *\n */\n clientToken?: string;\n\n /**\n * The time when the message was sent.\n *\n */\n timestamp?: Date;\n\n /**\n * A UTF-8 encoded JSON document that contains information that your devices need to perform the job.\n *\n */\n jobDocument?: object;\n\n /**\n * Contains data about the state of a job execution.\n *\n */\n executionState?: JobExecutionState;\n\n}\n\n/**\n * Data needed to subscribe to UpdateJobExecution responses.\n *\n * @category IotJobs\n */\nexport interface UpdateJobExecutionSubscriptionRequest {\n\n /**\n * Job ID that you want to subscribe to UpdateJobExecution response events for.\n *\n */\n jobId: string;\n\n /**\n * Name of the IoT Thing that you want to subscribe to UpdateJobExecution response events for.\n *\n */\n thingName: string;\n\n}\n\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n *\n * This file is generated\n */\n\n/**\n * @packageDocumentation\n * @module shadow\n */\n\nimport * as model from \"./model\";\nimport { mqtt, mqtt5 } from \"aws-crt\";\nimport { toUtf8 } from \"@aws-sdk/util-utf8-browser\"\nimport * as service_client_mqtt_adapter from \"../service_client_mqtt_adapter\";\n\nexport { model };\n\n/**\n * Error subclass for IotShadow service errors\n *\n * @category IotShadow\n */\nexport class IotShadowError extends Error {\n\n public prototype: any; // Hack to get around TS not knowing about prototypes\n\n constructor(message?: string, readonly payload?: mqtt.Payload) {\n // 'Error' breaks JS prototype chain when instantiated\n super(message);\n\n // restore prototype chain\n const myProto = new.target.prototype;\n if (Object.setPrototypeOf) { Object.setPrototypeOf(this, myProto); }\n else { this.prototype = myProto; }\n }\n}\n\n/**\n * The AWS IoT Device Shadow service adds shadows to AWS IoT thing objects. Shadows are a simple data store for device properties and state. Shadows can make a device’s state available to apps and other services whether the device is connected to AWS IoT or not.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html\n *\n * @category IotShadow\n */\nexport class IotShadowClient {\n\n // @ts-ignore\n private mqttAdapter: service_client_mqtt_adapter.IServiceClientMqttAdapter;\n\n private static INVALID_PAYLOAD_PARSING_ERROR = \"Invalid/unknown error parsing payload into response\";\n\n private static createClientError(err: any, payload: ArrayBuffer) : IotShadowError {\n if (err instanceof Error) {\n return new IotShadowError(err.message, payload);\n } else {\n return new IotShadowError( IotShadowClient.INVALID_PAYLOAD_PARSING_ERROR, payload);\n }\n }\n\n constructor(connection?: mqtt.MqttClientConnection) {\n if (connection !== undefined) {\n this.mqttAdapter = new service_client_mqtt_adapter.ServiceClientMqtt311Adapter(connection);\n }\n }\n\n /**\n * Creates a new IotShadowClient that uses the SDK Mqtt5 client internally.\n *\n * The pre-existing constructor that is bound to the MQTT311 client makes this awkward since we\n * must support\n *\n * ```\n * new IotShadowClient(mqtt311connection);\n * ```\n *\n * for backwards compatibility, but still want to be able to inject an MQTT5 client as well.\n *\n * @param client the MQTT5 client to use with this service client\n *\n * @returns a new IotShadowClient instance\n */\n static newFromMqtt5Client(client: mqtt5.Mqtt5Client) : IotShadowClient {\n let serviceClient: IotShadowClient = new IotShadowClient();\n serviceClient.mqttAdapter = new service_client_mqtt_adapter.ServiceClientMqtt5Adapter(client);\n\n return serviceClient;\n }\n\n /**\n * Subscribes to the rejected topic for the UpdateShadow operation\n *\n *\n * subscribeToUpdateShadowRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-rejected-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToUpdateShadowRejected(\n request: model.UpdateShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/update/rejected\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ErrorResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ErrorResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribe to ShadowDelta events for the (classic) shadow of an AWS IoT thing.\n *\n *\n * subscribeToShadowDeltaUpdatedEvents may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-delta-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToShadowDeltaUpdatedEvents(\n request: model.ShadowDeltaUpdatedSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ShadowDeltaUpdatedEvent) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/update/delta\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ShadowDeltaUpdatedEvent | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ShadowDeltaUpdatedEvent;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic for the GetNamedShadow operation.\n *\n *\n * subscribeToGetNamedShadowRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#get-rejected-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToGetNamedShadowRejected(\n request: model.GetNamedShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/get/rejected\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ErrorResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ErrorResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic for the DeleteNamedShadow operation.\n *\n *\n * subscribeToDeleteNamedShadowRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#delete-rejected-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToDeleteNamedShadowRejected(\n request: model.DeleteNamedShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/delete/rejected\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ErrorResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ErrorResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Deletes the (classic) shadow for an AWS IoT thing.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#delete-pub-sub-topic\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotShadow\n */\n async publishDeleteShadow(\n request: model.DeleteShadowRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/delete\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Gets a named shadow for an AWS IoT thing.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#get-pub-sub-topic\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotShadow\n */\n async publishGetNamedShadow(\n request: model.GetNamedShadowRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/get\";\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n topic = topic.replace(\"{thingName}\", request.thingName);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Subscribes to the accepted topic for the DeleteShadow operation\n *\n *\n * subscribeToDeleteShadowAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#delete-accepted-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToDeleteShadowAccepted(\n request: model.DeleteShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.DeleteShadowResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/delete/accepted\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.DeleteShadowResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.DeleteShadowResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the accepted topic for the GetShadow operation.\n *\n *\n * subscribeToGetShadowAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#get-accepted-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToGetShadowAccepted(\n request: model.GetShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.GetShadowResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/get/accepted\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.GetShadowResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.GetShadowResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the accepted topic for the GetNamedShadow operation.\n *\n *\n * subscribeToGetNamedShadowAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#get-accepted-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToGetNamedShadowAccepted(\n request: model.GetNamedShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.GetShadowResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/get/accepted\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.GetShadowResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.GetShadowResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribe to ShadowUpdated events for a named shadow of an AWS IoT thing.\n *\n *\n * subscribeToNamedShadowUpdatedEvents may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-documents-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToNamedShadowUpdatedEvents(\n request: model.NamedShadowUpdatedSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ShadowUpdatedEvent) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/update/documents\";\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ShadowUpdatedEvent | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ShadowUpdatedEvent;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribe to ShadowUpdated events for the (classic) shadow of an AWS IoT thing.\n *\n *\n * subscribeToShadowUpdatedEvents may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-documents-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToShadowUpdatedEvents(\n request: model.ShadowUpdatedSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ShadowUpdatedEvent) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/update/documents\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ShadowUpdatedEvent | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ShadowUpdatedEvent;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Deletes a named shadow for an AWS IoT thing.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#delete-pub-sub-topic\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotShadow\n */\n async publishDeleteNamedShadow(\n request: model.DeleteNamedShadowRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/delete\";\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n topic = topic.replace(\"{thingName}\", request.thingName);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Subscribes to the accepted topic for the DeleteNamedShadow operation.\n *\n *\n * subscribeToDeleteNamedShadowAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#delete-accepted-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToDeleteNamedShadowAccepted(\n request: model.DeleteNamedShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.DeleteShadowResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/delete/accepted\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.DeleteShadowResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.DeleteShadowResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic for the DeleteShadow operation\n *\n *\n * subscribeToDeleteShadowRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#delete-rejected-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToDeleteShadowRejected(\n request: model.DeleteShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/delete/rejected\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ErrorResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ErrorResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic for the GetShadow operation.\n *\n *\n * subscribeToGetShadowRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#get-rejected-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToGetShadowRejected(\n request: model.GetShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/get/rejected\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ErrorResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ErrorResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Update a device's (classic) shadow.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-pub-sub-topic\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotShadow\n */\n async publishUpdateShadow(\n request: model.UpdateShadowRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/update\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Gets the (classic) shadow for an AWS IoT thing.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#get-pub-sub-topic\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotShadow\n */\n async publishGetShadow(\n request: model.GetShadowRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/get\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Subscribes to the accepted topic for the UpdateShadow operation\n *\n *\n * subscribeToUpdateShadowAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-accepted-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToUpdateShadowAccepted(\n request: model.UpdateShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.UpdateShadowResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/update/accepted\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.UpdateShadowResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.UpdateShadowResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the rejected topic for the UpdateNamedShadow operation\n *\n *\n * subscribeToUpdateNamedShadowRejected may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-rejected-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToUpdateNamedShadowRejected(\n request: model.UpdateNamedShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ErrorResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/update/rejected\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ErrorResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ErrorResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Update a named shadow for a device.\n *\n * If the device is offline, the PUBLISH packet will be sent once the connection resumes.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-pub-sub-topic\n *\n * @param request Message to be serialized and sent\n * @param qos Quality of Service for delivering this message\n * @returns Promise which returns a `mqtt.MqttRequest` which will contain the packet id of\n * the PUBLISH packet.\n *\n * * For QoS 0, completes as soon as the packet is sent.\n * * For QoS 1, completes when PUBACK is received.\n * * QoS 2 is not supported by AWS IoT.\n *\n * @category IotShadow\n */\n async publishUpdateNamedShadow(\n request: model.UpdateNamedShadowRequest,\n qos: mqtt.QoS)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/update\";\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n topic = topic.replace(\"{thingName}\", request.thingName);\n return this.mqttAdapter.publish(topic, JSON.stringify(request), qos);\n }\n\n /**\n * Subscribe to NamedShadowDelta events for a named shadow of an AWS IoT thing.\n *\n *\n * subscribeToNamedShadowDeltaUpdatedEvents may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-delta-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToNamedShadowDeltaUpdatedEvents(\n request: model.NamedShadowDeltaUpdatedSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.ShadowDeltaUpdatedEvent) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/update/delta\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.ShadowDeltaUpdatedEvent | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.ShadowDeltaUpdatedEvent;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n /**\n * Subscribes to the accepted topic for the UpdateNamedShadow operation\n *\n *\n * subscribeToUpdateNamedShadowAccepted may be called while the device is offline, though the async\n * operation cannot complete successfully until the connection resumes.\n *\n * Once subscribed, `messageHandler` is invoked each time a message matching\n * the `topic` is received. It is possible for such messages to arrive before\n * the SUBACK is received.\n *\n * AWS documentation: https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html#update-accepted-pub-sub-topic\n *\n * @param request Subscription request configuration\n * @param qos Maximum requested QoS that server may use when sending messages to the client.\n * The server may grant a lower QoS in the SUBACK\n * @param messageHandler Callback invoked when message or error is received from the server.\n * @returns Promise which returns a `mqtt.MqttSubscribeRequest` which will contain the\n * result of the SUBSCRIBE. The Promise resolves when a SUBACK is returned\n * from the server or is rejected when an exception occurs.\n *\n * @category IotShadow\n */\n async subscribeToUpdateNamedShadowAccepted(\n request: model.UpdateNamedShadowSubscriptionRequest,\n qos: mqtt.QoS,\n messageHandler: (error?: IotShadowError, response?: model.UpdateShadowResponse) => void)\n : Promise {\n\n let topic: string = \"$aws/things/{thingName}/shadow/name/{shadowName}/update/accepted\";\n topic = topic.replace(\"{thingName}\", request.thingName);\n topic = topic.replace(\"{shadowName}\", request.shadowName);\n const on_message = (topic: string, payload: ArrayBuffer) => {\n let response: model.UpdateShadowResponse | undefined;\n let error: IotShadowError | undefined;\n try {\n const payload_text = toUtf8(new Uint8Array(payload));\n response = JSON.parse(payload_text) as model.UpdateShadowResponse;\n } catch (err) {\n error = IotShadowClient.createClientError(err, payload);\n }\n finally {\n messageHandler(error, response);\n }\n }\n\n return this.mqttAdapter.subscribe(topic, qos, on_message);\n }\n\n}\n","/*\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0.\n */\n\nimport { mqtt, mqtt5, CrtError } from 'aws-crt';\n\n/**\n * Internal interface for the low-level MQTT service clients that lets them use either an MQTT311 client or an MQTT5\n * client. Essentially a copy of the part of the MQTT311 client's public API that is used by the original\n * MQTT service clients.\n *\n * @internal\n */\nexport interface IServiceClientMqttAdapter {\n\n /**\n * MQTT publish API sufficient for low-level MQTT service client usage.\n *\n * @param topic topic to publish to\n * @param payload payload of the message to publish\n * @param qos MQTT quality of service to deliver the message with\n */\n publish(topic: string, payload: mqtt.Payload, qos: mqtt.QoS) : Promise;\n\n /**\n * MQTT subscribe API sufficient for low-level MQTT service client usage.\n *\n * @param topic topic to subscribe to\n * @param qos requested maximum quality of service the subscription should allow\n * @param on_message\n */\n subscribe(topic: string, qos: mqtt.QoS, on_message: mqtt.OnMessageCallback) : Promise;\n}\n\n/**\n * Simple adapter for low-level MQTT service clients to use the MQTT311 client. Since the interface is just the\n * MQTT311 client's interface, all we need to do is forward.\n *\n * @internal\n */\nexport class ServiceClientMqtt311Adapter implements IServiceClientMqttAdapter {\n\n constructor(private connection: mqtt.MqttClientConnection) {\n }\n\n public async publish(topic: string, payload: mqtt.Payload, qos: mqtt.QoS) : Promise {\n return this.connection.publish(topic, payload, qos);\n }\n\n public async subscribe(topic: string, qos: mqtt.QoS, on_message: mqtt.OnMessageCallback) : Promise {\n return this.connection.subscribe(topic, qos, on_message);\n }\n}\n\n/**\n * Adapter for low-level MQTT service clients to use the MQTT5 client.\n *\n * In addition to converting between the API contracts, adaptation requires constrained simulation of certain\n * features of the MQTT311 client (per subscription callbacks). Full emulation of the topic tried is not needed\n * because all subscriptions are done with individual, non-wildcarded topics.\n *\n * @internal\n */\nexport class ServiceClientMqtt5Adapter implements IServiceClientMqttAdapter {\n\n subscriptionHandlers: Map;\n\n private onMessageReceivedHandler(eventData: mqtt5.MessageReceivedEvent) : void {\n let publish : mqtt5.PublishPacket = eventData.message;\n let topic: string = publish.topicName;\n let handler : mqtt.OnMessageCallback | undefined = this.subscriptionHandlers.get(topic);\n if (handler) {\n /* The payload field of a PublishPacket is always an ArrayBuffer */\n handler(topic, publish.payload as ArrayBuffer, false, publish.qos, publish.retain ?? false);\n }\n }\n\n constructor(private client: mqtt5.Mqtt5Client) {\n this.subscriptionHandlers = new Map();\n\n client.on('messageReceived', this.onMessageReceivedHandler.bind(this));\n }\n\n public async publish(topic: string, payload: mqtt.Payload, qos: mqtt.QoS) : Promise {\n return new Promise(async (resolve, reject) => {\n\n try {\n let result: mqtt5.PublishCompletionResult = await this.client.publish({\n topicName: topic,\n payload: payload,\n qos: (qos as number) as mqtt5.QoS\n });\n\n if (result === undefined) {\n if (qos == mqtt.QoS.AtMostOnce) {\n resolve({});\n } else {\n reject(\"Publish failed due to internal error\");\n }\n return;\n }\n\n let puback: mqtt5.PubackPacket = result;\n if (mqtt5.isSuccessfulPubackReasonCode(puback.reasonCode)) {\n resolve({});\n } else {\n reject(new CrtError(\"Publish failed with reason code: \" + puback.reasonCode));\n }\n } catch (e) {\n reject(e);\n }\n });\n }\n\n public async subscribe(topic: string, qos: mqtt.QoS, on_message: mqtt.OnMessageCallback) : Promise {\n return new Promise(async (resolve, reject) => {\n\n try {\n this.subscriptionHandlers.set(topic, on_message);\n let result: mqtt5.SubackPacket = await this.client.subscribe({\n subscriptions: [{topicFilter: topic, qos: (qos as number) as mqtt5.QoS}]\n });\n\n let reasonCode: mqtt5.SubackReasonCode = result.reasonCodes[0];\n if (mqtt5.isSuccessfulSubackReasonCode(reasonCode)) {\n resolve({\n topic: topic,\n qos: (reasonCode as number) as mqtt.QoS\n });\n } else {\n throw new CrtError(\"Subscribe failed with reason code: \" + reasonCode);\n }\n } catch (e) {\n this.subscriptionHandlers.delete(topic);\n reject(e);\n }\n });\n }\n}","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst symbol = Symbol.for('BufferList')\n\nfunction BufferList (buf) {\n if (!(this instanceof BufferList)) {\n return new BufferList(buf)\n }\n\n BufferList._init.call(this, buf)\n}\n\nBufferList._init = function _init (buf) {\n Object.defineProperty(this, symbol, { value: true })\n\n this._bufs = []\n this.length = 0\n\n if (buf) {\n this.append(buf)\n }\n}\n\nBufferList.prototype._new = function _new (buf) {\n return new BufferList(buf)\n}\n\nBufferList.prototype._offset = function _offset (offset) {\n if (offset === 0) {\n return [0, 0]\n }\n\n let tot = 0\n\n for (let i = 0; i < this._bufs.length; i++) {\n const _t = tot + this._bufs[i].length\n if (offset < _t || i === this._bufs.length - 1) {\n return [i, offset - tot]\n }\n tot = _t\n }\n}\n\nBufferList.prototype._reverseOffset = function (blOffset) {\n const bufferId = blOffset[0]\n let offset = blOffset[1]\n\n for (let i = 0; i < bufferId; i++) {\n offset += this._bufs[i].length\n }\n\n return offset\n}\n\nBufferList.prototype.get = function get (index) {\n if (index > this.length || index < 0) {\n return undefined\n }\n\n const offset = this._offset(index)\n\n return this._bufs[offset[0]][offset[1]]\n}\n\nBufferList.prototype.slice = function slice (start, end) {\n if (typeof start === 'number' && start < 0) {\n start += this.length\n }\n\n if (typeof end === 'number' && end < 0) {\n end += this.length\n }\n\n return this.copy(null, 0, start, end)\n}\n\nBufferList.prototype.copy = function copy (dst, dstStart, srcStart, srcEnd) {\n if (typeof srcStart !== 'number' || srcStart < 0) {\n srcStart = 0\n }\n\n if (typeof srcEnd !== 'number' || srcEnd > this.length) {\n srcEnd = this.length\n }\n\n if (srcStart >= this.length) {\n return dst || Buffer.alloc(0)\n }\n\n if (srcEnd <= 0) {\n return dst || Buffer.alloc(0)\n }\n\n const copy = !!dst\n const off = this._offset(srcStart)\n const len = srcEnd - srcStart\n let bytes = len\n let bufoff = (copy && dstStart) || 0\n let start = off[1]\n\n // copy/slice everything\n if (srcStart === 0 && srcEnd === this.length) {\n if (!copy) {\n // slice, but full concat if multiple buffers\n return this._bufs.length === 1\n ? this._bufs[0]\n : Buffer.concat(this._bufs, this.length)\n }\n\n // copy, need to copy individual buffers\n for (let i = 0; i < this._bufs.length; i++) {\n this._bufs[i].copy(dst, bufoff)\n bufoff += this._bufs[i].length\n }\n\n return dst\n }\n\n // easy, cheap case where it's a subset of one of the buffers\n if (bytes <= this._bufs[off[0]].length - start) {\n return copy\n ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes)\n : this._bufs[off[0]].slice(start, start + bytes)\n }\n\n if (!copy) {\n // a slice, we need something to copy in to\n dst = Buffer.allocUnsafe(len)\n }\n\n for (let i = off[0]; i < this._bufs.length; i++) {\n const l = this._bufs[i].length - start\n\n if (bytes > l) {\n this._bufs[i].copy(dst, bufoff, start)\n bufoff += l\n } else {\n this._bufs[i].copy(dst, bufoff, start, start + bytes)\n bufoff += l\n break\n }\n\n bytes -= l\n\n if (start) {\n start = 0\n }\n }\n\n // safeguard so that we don't return uninitialized memory\n if (dst.length > bufoff) return dst.slice(0, bufoff)\n\n return dst\n}\n\nBufferList.prototype.shallowSlice = function shallowSlice (start, end) {\n start = start || 0\n end = typeof end !== 'number' ? this.length : end\n\n if (start < 0) {\n start += this.length\n }\n\n if (end < 0) {\n end += this.length\n }\n\n if (start === end) {\n return this._new()\n }\n\n const startOffset = this._offset(start)\n const endOffset = this._offset(end)\n const buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1)\n\n if (endOffset[1] === 0) {\n buffers.pop()\n } else {\n buffers[buffers.length - 1] = buffers[buffers.length - 1].slice(0, endOffset[1])\n }\n\n if (startOffset[1] !== 0) {\n buffers[0] = buffers[0].slice(startOffset[1])\n }\n\n return this._new(buffers)\n}\n\nBufferList.prototype.toString = function toString (encoding, start, end) {\n return this.slice(start, end).toString(encoding)\n}\n\nBufferList.prototype.consume = function consume (bytes) {\n // first, normalize the argument, in accordance with how Buffer does it\n bytes = Math.trunc(bytes)\n // do nothing if not a positive number\n if (Number.isNaN(bytes) || bytes <= 0) return this\n\n while (this._bufs.length) {\n if (bytes >= this._bufs[0].length) {\n bytes -= this._bufs[0].length\n this.length -= this._bufs[0].length\n this._bufs.shift()\n } else {\n this._bufs[0] = this._bufs[0].slice(bytes)\n this.length -= bytes\n break\n }\n }\n\n return this\n}\n\nBufferList.prototype.duplicate = function duplicate () {\n const copy = this._new()\n\n for (let i = 0; i < this._bufs.length; i++) {\n copy.append(this._bufs[i])\n }\n\n return copy\n}\n\nBufferList.prototype.append = function append (buf) {\n if (buf == null) {\n return this\n }\n\n if (buf.buffer) {\n // append a view of the underlying ArrayBuffer\n this._appendBuffer(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength))\n } else if (Array.isArray(buf)) {\n for (let i = 0; i < buf.length; i++) {\n this.append(buf[i])\n }\n } else if (this._isBufferList(buf)) {\n // unwrap argument into individual BufferLists\n for (let i = 0; i < buf._bufs.length; i++) {\n this.append(buf._bufs[i])\n }\n } else {\n // coerce number arguments to strings, since Buffer(number) does\n // uninitialized memory allocation\n if (typeof buf === 'number') {\n buf = buf.toString()\n }\n\n this._appendBuffer(Buffer.from(buf))\n }\n\n return this\n}\n\nBufferList.prototype._appendBuffer = function appendBuffer (buf) {\n this._bufs.push(buf)\n this.length += buf.length\n}\n\nBufferList.prototype.indexOf = function (search, offset, encoding) {\n if (encoding === undefined && typeof offset === 'string') {\n encoding = offset\n offset = undefined\n }\n\n if (typeof search === 'function' || Array.isArray(search)) {\n throw new TypeError('The \"value\" argument must be one of type string, Buffer, BufferList, or Uint8Array.')\n } else if (typeof search === 'number') {\n search = Buffer.from([search])\n } else if (typeof search === 'string') {\n search = Buffer.from(search, encoding)\n } else if (this._isBufferList(search)) {\n search = search.slice()\n } else if (Array.isArray(search.buffer)) {\n search = Buffer.from(search.buffer, search.byteOffset, search.byteLength)\n } else if (!Buffer.isBuffer(search)) {\n search = Buffer.from(search)\n }\n\n offset = Number(offset || 0)\n\n if (isNaN(offset)) {\n offset = 0\n }\n\n if (offset < 0) {\n offset = this.length + offset\n }\n\n if (offset < 0) {\n offset = 0\n }\n\n if (search.length === 0) {\n return offset > this.length ? this.length : offset\n }\n\n const blOffset = this._offset(offset)\n let blIndex = blOffset[0] // index of which internal buffer we're working on\n let buffOffset = blOffset[1] // offset of the internal buffer we're working on\n\n // scan over each buffer\n for (; blIndex < this._bufs.length; blIndex++) {\n const buff = this._bufs[blIndex]\n\n while (buffOffset < buff.length) {\n const availableWindow = buff.length - buffOffset\n\n if (availableWindow >= search.length) {\n const nativeSearchResult = buff.indexOf(search, buffOffset)\n\n if (nativeSearchResult !== -1) {\n return this._reverseOffset([blIndex, nativeSearchResult])\n }\n\n buffOffset = buff.length - search.length + 1 // end of native search window\n } else {\n const revOffset = this._reverseOffset([blIndex, buffOffset])\n\n if (this._match(revOffset, search)) {\n return revOffset\n }\n\n buffOffset++\n }\n }\n\n buffOffset = 0\n }\n\n return -1\n}\n\nBufferList.prototype._match = function (offset, search) {\n if (this.length - offset < search.length) {\n return false\n }\n\n for (let searchOffset = 0; searchOffset < search.length; searchOffset++) {\n if (this.get(offset + searchOffset) !== search[searchOffset]) {\n return false\n }\n }\n return true\n}\n\n;(function () {\n const methods = {\n readDoubleBE: 8,\n readDoubleLE: 8,\n readFloatBE: 4,\n readFloatLE: 4,\n readInt32BE: 4,\n readInt32LE: 4,\n readUInt32BE: 4,\n readUInt32LE: 4,\n readInt16BE: 2,\n readInt16LE: 2,\n readUInt16BE: 2,\n readUInt16LE: 2,\n readInt8: 1,\n readUInt8: 1,\n readIntBE: null,\n readIntLE: null,\n readUIntBE: null,\n readUIntLE: null\n }\n\n for (const m in methods) {\n (function (m) {\n if (methods[m] === null) {\n BufferList.prototype[m] = function (offset, byteLength) {\n return this.slice(offset, offset + byteLength)[m](0, byteLength)\n }\n } else {\n BufferList.prototype[m] = function (offset = 0) {\n return this.slice(offset, offset + methods[m])[m](0)\n }\n }\n }(m))\n }\n}())\n\n// Used internally by the class and also as an indicator of this object being\n// a `BufferList`. It's not possible to use `instanceof BufferList` in a browser\n// environment because there could be multiple different copies of the\n// BufferList class and some `BufferList`s might be `BufferList`s.\nBufferList.prototype._isBufferList = function _isBufferList (b) {\n return b instanceof BufferList || BufferList.isBufferList(b)\n}\n\nBufferList.isBufferList = function isBufferList (b) {\n return b != null && b[symbol]\n}\n\nmodule.exports = BufferList\n","'use strict'\n\nconst DuplexStream = require('readable-stream').Duplex\nconst inherits = require('inherits')\nconst BufferList = require('./BufferList')\n\nfunction BufferListStream (callback) {\n if (!(this instanceof BufferListStream)) {\n return new BufferListStream(callback)\n }\n\n if (typeof callback === 'function') {\n this._callback = callback\n\n const piper = function piper (err) {\n if (this._callback) {\n this._callback(err)\n this._callback = null\n }\n }.bind(this)\n\n this.on('pipe', function onPipe (src) {\n src.on('error', piper)\n })\n this.on('unpipe', function onUnpipe (src) {\n src.removeListener('error', piper)\n })\n\n callback = null\n }\n\n BufferList._init.call(this, callback)\n DuplexStream.call(this)\n}\n\ninherits(BufferListStream, DuplexStream)\nObject.assign(BufferListStream.prototype, BufferList.prototype)\n\nBufferListStream.prototype._new = function _new (callback) {\n return new BufferListStream(callback)\n}\n\nBufferListStream.prototype._write = function _write (buf, encoding, callback) {\n this._appendBuffer(buf)\n\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nBufferListStream.prototype._read = function _read (size) {\n if (!this.length) {\n return this.push(null)\n }\n\n size = Math.min(size, this.length)\n this.push(this.slice(0, size))\n this.consume(size)\n}\n\nBufferListStream.prototype.end = function end (chunk) {\n DuplexStream.prototype.end.call(this, chunk)\n\n if (this._callback) {\n this._callback(null, this.slice())\n this._callback = null\n }\n}\n\nBufferListStream.prototype._destroy = function _destroy (err, cb) {\n this._bufs.length = 0\n this.length = 0\n cb(err)\n}\n\nBufferListStream.prototype._isBufferList = function _isBufferList (b) {\n return b instanceof BufferListStream || b instanceof BufferList || BufferListStream.isBufferList(b)\n}\n\nBufferListStream.isBufferList = BufferList.isBufferList\n\nmodule.exports = BufferListStream\nmodule.exports.BufferListStream = BufferListStream\nmodule.exports.BufferList = BufferList\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t const N = 16;\n\n\t //Origin pbox and sbox, derived from PI\n\t const ORIG_P = [\n\t 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t 0x9216D5D9, 0x8979FB1B\n\t ];\n\n\t const ORIG_S = [\n\t [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n\t [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n\t [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n\t [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n\t ];\n\n\t var BLOWFISH_CTX = {\n\t pbox: [],\n\t sbox: []\n\t }\n\n\t function F(ctx, x){\n\t let a = (x >> 24) & 0xFF;\n\t let b = (x >> 16) & 0xFF;\n\t let c = (x >> 8) & 0xFF;\n\t let d = x & 0xFF;\n\n\t let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t y = y ^ ctx.sbox[2][c];\n\t y = y + ctx.sbox[3][d];\n\n\t return y;\n\t }\n\n\t function BlowFish_Encrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = 0; i < N; ++i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[N];\n\t Xl = Xl ^ ctx.pbox[N + 1];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t function BlowFish_Decrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = N + 1; i > 1; --i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[1];\n\t Xl = Xl ^ ctx.pbox[0];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t /**\n\t * Initialization ctx's pbox and sbox.\n\t *\n\t * @param {Object} ctx The object has pbox and sbox.\n\t * @param {Array} key An array of 32-bit words.\n\t * @param {int} keysize The length of the key.\n\t *\n\t * @example\n\t *\n\t * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t */\n\t function BlowFishInit(ctx, key, keysize)\n\t {\n\t for(let Row = 0; Row < 4; Row++)\n\t {\n\t ctx.sbox[Row] = [];\n\t for(let Col = 0; Col < 256; Col++)\n\t {\n\t ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t }\n\t }\n\n\t let keyIndex = 0;\n\t for(let index = 0; index < N + 2; index++)\n\t {\n\t ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t keyIndex++;\n\t if(keyIndex >= keysize)\n\t {\n\t keyIndex = 0;\n\t }\n\t }\n\n\t let Data1 = 0;\n\t let Data2 = 0;\n\t let res = 0;\n\t for(let i = 0; i < N + 2; i += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.pbox[i] = Data1;\n\t ctx.pbox[i + 1] = Data2;\n\t }\n\n\t for(let i = 0; i < 4; i++)\n\t {\n\t for(let j = 0; j < 256; j += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.sbox[i][j] = Data1;\n\t ctx.sbox[i][j + 1] = Data2;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t /**\n\t * Blowfish block cipher algorithm.\n\t */\n\t var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t //Initialization pbox and sbox\n\t BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t blockSize: 64/32,\n\n\t keySize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t * @property {number} iterations The number of iterations to perform. Default: 250000\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA256,\n\t iterations: 250000\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","var stream = require('readable-stream')\nvar eos = require('end-of-stream')\nvar inherits = require('inherits')\nvar shift = require('stream-shift')\n\nvar SIGNAL_FLUSH = (Buffer.from && Buffer.from !== Uint8Array.from)\n ? Buffer.from([0])\n : new Buffer([0])\n\nvar onuncork = function(self, fn) {\n if (self._corked) self.once('uncork', fn)\n else fn()\n}\n\nvar autoDestroy = function (self, err) {\n if (self._autoDestroy) self.destroy(err)\n}\n\nvar destroyer = function(self, end) {\n return function(err) {\n if (err) autoDestroy(self, err.message === 'premature close' ? null : err)\n else if (end && !self._ended) self.end()\n }\n}\n\nvar end = function(ws, fn) {\n if (!ws) return fn()\n if (ws._writableState && ws._writableState.finished) return fn()\n if (ws._writableState) return ws.end(fn)\n ws.end()\n fn()\n}\n\nvar toStreams2 = function(rs) {\n return new (stream.Readable)({objectMode:true, highWaterMark:16}).wrap(rs)\n}\n\nvar Duplexify = function(writable, readable, opts) {\n if (!(this instanceof Duplexify)) return new Duplexify(writable, readable, opts)\n stream.Duplex.call(this, opts)\n\n this._writable = null\n this._readable = null\n this._readable2 = null\n\n this._autoDestroy = !opts || opts.autoDestroy !== false\n this._forwardDestroy = !opts || opts.destroy !== false\n this._forwardEnd = !opts || opts.end !== false\n this._corked = 1 // start corked\n this._ondrain = null\n this._drained = false\n this._forwarding = false\n this._unwrite = null\n this._unread = null\n this._ended = false\n\n this.destroyed = false\n\n if (writable) this.setWritable(writable)\n if (readable) this.setReadable(readable)\n}\n\ninherits(Duplexify, stream.Duplex)\n\nDuplexify.obj = function(writable, readable, opts) {\n if (!opts) opts = {}\n opts.objectMode = true\n opts.highWaterMark = 16\n return new Duplexify(writable, readable, opts)\n}\n\nDuplexify.prototype.cork = function() {\n if (++this._corked === 1) this.emit('cork')\n}\n\nDuplexify.prototype.uncork = function() {\n if (this._corked && --this._corked === 0) this.emit('uncork')\n}\n\nDuplexify.prototype.setWritable = function(writable) {\n if (this._unwrite) this._unwrite()\n\n if (this.destroyed) {\n if (writable && writable.destroy) writable.destroy()\n return\n }\n\n if (writable === null || writable === false) {\n this.end()\n return\n }\n\n var self = this\n var unend = eos(writable, {writable:true, readable:false}, destroyer(this, this._forwardEnd))\n\n var ondrain = function() {\n var ondrain = self._ondrain\n self._ondrain = null\n if (ondrain) ondrain()\n }\n\n var clear = function() {\n self._writable.removeListener('drain', ondrain)\n unend()\n }\n\n if (this._unwrite) process.nextTick(ondrain) // force a drain on stream reset to avoid livelocks\n\n this._writable = writable\n this._writable.on('drain', ondrain)\n this._unwrite = clear\n\n this.uncork() // always uncork setWritable\n}\n\nDuplexify.prototype.setReadable = function(readable) {\n if (this._unread) this._unread()\n\n if (this.destroyed) {\n if (readable && readable.destroy) readable.destroy()\n return\n }\n\n if (readable === null || readable === false) {\n this.push(null)\n this.resume()\n return\n }\n\n var self = this\n var unend = eos(readable, {writable:false, readable:true}, destroyer(this))\n\n var onreadable = function() {\n self._forward()\n }\n\n var onend = function() {\n self.push(null)\n }\n\n var clear = function() {\n self._readable2.removeListener('readable', onreadable)\n self._readable2.removeListener('end', onend)\n unend()\n }\n\n this._drained = true\n this._readable = readable\n this._readable2 = readable._readableState ? readable : toStreams2(readable)\n this._readable2.on('readable', onreadable)\n this._readable2.on('end', onend)\n this._unread = clear\n\n this._forward()\n}\n\nDuplexify.prototype._read = function() {\n this._drained = true\n this._forward()\n}\n\nDuplexify.prototype._forward = function() {\n if (this._forwarding || !this._readable2 || !this._drained) return\n this._forwarding = true\n\n var data\n\n while (this._drained && (data = shift(this._readable2)) !== null) {\n if (this.destroyed) continue\n this._drained = this.push(data)\n }\n\n this._forwarding = false\n}\n\nDuplexify.prototype.destroy = function(err) {\n if (this.destroyed) return\n this.destroyed = true\n\n var self = this\n process.nextTick(function() {\n self._destroy(err)\n })\n}\n\nDuplexify.prototype._destroy = function(err) {\n if (err) {\n var ondrain = this._ondrain\n this._ondrain = null\n if (ondrain) ondrain(err)\n else this.emit('error', err)\n }\n\n if (this._forwardDestroy) {\n if (this._readable && this._readable.destroy) this._readable.destroy()\n if (this._writable && this._writable.destroy) this._writable.destroy()\n }\n\n this.emit('close')\n}\n\nDuplexify.prototype._write = function(data, enc, cb) {\n if (this.destroyed) return cb()\n if (this._corked) return onuncork(this, this._write.bind(this, data, enc, cb))\n if (data === SIGNAL_FLUSH) return this._finish(cb)\n if (!this._writable) return cb()\n\n if (this._writable.write(data) === false) this._ondrain = cb\n else cb()\n}\n\nDuplexify.prototype._finish = function(cb) {\n var self = this\n this.emit('preend')\n onuncork(this, function() {\n end(self._forwardEnd && self._writable, function() {\n // haxx to not emit prefinish twice\n if (self._writableState.prefinished === false) self._writableState.prefinished = true\n self.emit('prefinish')\n onuncork(self, cb)\n })\n })\n}\n\nDuplexify.prototype.end = function(data, enc, cb) {\n if (typeof data === 'function') return this.end(null, null, data)\n if (typeof enc === 'function') return this.end(data, null, enc)\n this._ended = true\n if (data) this.write(data)\n if (!this._writableState.ending) this.write(SIGNAL_FLUSH)\n return stream.Writable.prototype.end.call(this, cb)\n}\n\nmodule.exports = Duplexify\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var once = require('once');\n\nvar noop = function() {};\n\nvar isRequest = function(stream) {\n\treturn stream.setHeader && typeof stream.abort === 'function';\n};\n\nvar isChildProcess = function(stream) {\n\treturn stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3\n};\n\nvar eos = function(stream, opts, callback) {\n\tif (typeof opts === 'function') return eos(stream, null, opts);\n\tif (!opts) opts = {};\n\n\tcallback = once(callback || noop);\n\n\tvar ws = stream._writableState;\n\tvar rs = stream._readableState;\n\tvar readable = opts.readable || (opts.readable !== false && stream.readable);\n\tvar writable = opts.writable || (opts.writable !== false && stream.writable);\n\tvar cancelled = false;\n\n\tvar onlegacyfinish = function() {\n\t\tif (!stream.writable) onfinish();\n\t};\n\n\tvar onfinish = function() {\n\t\twritable = false;\n\t\tif (!readable) callback.call(stream);\n\t};\n\n\tvar onend = function() {\n\t\treadable = false;\n\t\tif (!writable) callback.call(stream);\n\t};\n\n\tvar onexit = function(exitCode) {\n\t\tcallback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);\n\t};\n\n\tvar onerror = function(err) {\n\t\tcallback.call(stream, err);\n\t};\n\n\tvar onclose = function() {\n\t\tprocess.nextTick(onclosenexttick);\n\t};\n\n\tvar onclosenexttick = function() {\n\t\tif (cancelled) return;\n\t\tif (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));\n\t\tif (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));\n\t};\n\n\tvar onrequest = function() {\n\t\tstream.req.on('finish', onfinish);\n\t};\n\n\tif (isRequest(stream)) {\n\t\tstream.on('complete', onfinish);\n\t\tstream.on('abort', onclose);\n\t\tif (stream.req) onrequest();\n\t\telse stream.on('request', onrequest);\n\t} else if (writable && !ws) { // legacy streams\n\t\tstream.on('end', onlegacyfinish);\n\t\tstream.on('close', onlegacyfinish);\n\t}\n\n\tif (isChildProcess(stream)) stream.on('exit', onexit);\n\n\tstream.on('end', onend);\n\tstream.on('finish', onfinish);\n\tif (opts.error !== false) stream.on('error', onerror);\n\tstream.on('close', onclose);\n\n\treturn function() {\n\t\tcancelled = true;\n\t\tstream.removeListener('complete', onfinish);\n\t\tstream.removeListener('abort', onclose);\n\t\tstream.removeListener('request', onrequest);\n\t\tif (stream.req) stream.req.removeListener('finish', onfinish);\n\t\tstream.removeListener('end', onlegacyfinish);\n\t\tstream.removeListener('close', onlegacyfinish);\n\t\tstream.removeListener('finish', onfinish);\n\t\tstream.removeListener('exit', onexit);\n\t\tstream.removeListener('end', onend);\n\t\tstream.removeListener('error', onerror);\n\t\tstream.removeListener('close', onclose);\n\t};\n};\n\nmodule.exports = eos;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nvar TreeNode = /** @class */ (function () {\n function TreeNode(key, value) {\n this._color = 1 /* TreeNodeColor.RED */;\n this._key = undefined;\n this._value = undefined;\n this._left = undefined;\n this._right = undefined;\n this._parent = undefined;\n this._key = key;\n this._value = value;\n }\n /**\n * @description Get the pre node.\n * @returns TreeNode about the pre node.\n */\n TreeNode.prototype._pre = function () {\n var preNode = this;\n if (preNode._color === 1 /* TreeNodeColor.RED */ &&\n preNode._parent._parent === preNode) {\n preNode = preNode._right;\n }\n else if (preNode._left) {\n preNode = preNode._left;\n while (preNode._right) {\n preNode = preNode._right;\n }\n }\n else {\n var pre = preNode._parent;\n while (pre._left === preNode) {\n preNode = pre;\n pre = preNode._parent;\n }\n preNode = pre;\n }\n return preNode;\n };\n /**\n * @description Get the next node.\n * @returns TreeNode about the next node.\n */\n TreeNode.prototype._next = function () {\n var nextNode = this;\n if (nextNode._right) {\n nextNode = nextNode._right;\n while (nextNode._left) {\n nextNode = nextNode._left;\n }\n return nextNode;\n }\n else {\n var pre = nextNode._parent;\n while (pre._right === nextNode) {\n nextNode = pre;\n pre = nextNode._parent;\n }\n if (nextNode._right !== pre) {\n return pre;\n }\n else\n return nextNode;\n }\n };\n /**\n * @description Rotate left.\n * @returns TreeNode about moved to original position after rotation.\n */\n TreeNode.prototype._rotateLeft = function () {\n var PP = this._parent;\n var V = this._right;\n var R = V._left;\n if (PP._parent === this)\n PP._parent = V;\n else if (PP._left === this)\n PP._left = V;\n else\n PP._right = V;\n V._parent = PP;\n V._left = this;\n this._parent = V;\n this._right = R;\n if (R)\n R._parent = this;\n return V;\n };\n /**\n * @description Rotate right.\n * @returns TreeNode about moved to original position after rotation.\n */\n TreeNode.prototype._rotateRight = function () {\n var PP = this._parent;\n var F = this._left;\n var K = F._right;\n if (PP._parent === this)\n PP._parent = F;\n else if (PP._left === this)\n PP._left = F;\n else\n PP._right = F;\n F._parent = PP;\n F._right = this;\n this._parent = F;\n this._left = K;\n if (K)\n K._parent = this;\n return F;\n };\n return TreeNode;\n}());\nexport { TreeNode };\nvar TreeNodeEnableIndex = /** @class */ (function (_super) {\n __extends(TreeNodeEnableIndex, _super);\n function TreeNodeEnableIndex() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._subTreeSize = 1;\n return _this;\n }\n /**\n * @description Rotate left and do recount.\n * @returns TreeNode about moved to original position after rotation.\n */\n TreeNodeEnableIndex.prototype._rotateLeft = function () {\n var parent = _super.prototype._rotateLeft.call(this);\n this._recount();\n parent._recount();\n return parent;\n };\n /**\n * @description Rotate right and do recount.\n * @returns TreeNode about moved to original position after rotation.\n */\n TreeNodeEnableIndex.prototype._rotateRight = function () {\n var parent = _super.prototype._rotateRight.call(this);\n this._recount();\n parent._recount();\n return parent;\n };\n TreeNodeEnableIndex.prototype._recount = function () {\n this._subTreeSize = 1;\n if (this._left) {\n this._subTreeSize += this._left._subTreeSize;\n }\n if (this._right) {\n this._subTreeSize += this._right._subTreeSize;\n }\n };\n return TreeNodeEnableIndex;\n}(TreeNode));\nexport { TreeNodeEnableIndex };\n","export const enum TreeNodeColor {\n RED = 1,\n BLACK = 0\n}\n\nexport class TreeNode {\n _color = TreeNodeColor.RED;\n _key: K | undefined = undefined;\n _value: V | undefined = undefined;\n _left: TreeNode | undefined = undefined;\n _right: TreeNode | undefined = undefined;\n _parent: TreeNode | undefined = undefined;\n constructor(key?: K, value?: V) {\n this._key = key;\n this._value = value;\n }\n /**\n * @description Get the pre node.\n * @returns TreeNode about the pre node.\n */\n _pre() {\n let preNode: TreeNode = this;\n if (\n preNode._color === TreeNodeColor.RED &&\n preNode._parent!._parent === preNode\n ) {\n preNode = preNode._right!;\n } else if (preNode._left) {\n preNode = preNode._left;\n while (preNode._right) {\n preNode = preNode._right;\n }\n } else {\n let pre = preNode._parent!;\n while (pre._left === preNode) {\n preNode = pre;\n pre = preNode._parent!;\n }\n preNode = pre;\n }\n return preNode;\n }\n /**\n * @description Get the next node.\n * @returns TreeNode about the next node.\n */\n _next() {\n let nextNode: TreeNode = this;\n if (nextNode._right) {\n nextNode = nextNode._right;\n while (nextNode._left) {\n nextNode = nextNode._left;\n }\n return nextNode;\n } else {\n let pre = nextNode._parent!;\n while (pre._right === nextNode) {\n nextNode = pre;\n pre = nextNode._parent!;\n }\n if (nextNode._right !== pre) {\n return pre;\n } else return nextNode;\n }\n }\n /**\n * @description Rotate left.\n * @returns TreeNode about moved to original position after rotation.\n */\n _rotateLeft() {\n const PP = this._parent!;\n const V = this._right!;\n const R = V._left;\n\n if (PP._parent === this) PP._parent = V;\n else if (PP._left === this) PP._left = V;\n else PP._right = V;\n\n V._parent = PP;\n V._left = this;\n\n this._parent = V;\n this._right = R;\n\n if (R) R._parent = this;\n\n return V;\n }\n /**\n * @description Rotate right.\n * @returns TreeNode about moved to original position after rotation.\n */\n _rotateRight() {\n const PP = this._parent!;\n const F = this._left!;\n const K = F._right;\n\n if (PP._parent === this) PP._parent = F;\n else if (PP._left === this) PP._left = F;\n else PP._right = F;\n\n F._parent = PP;\n F._right = this;\n\n this._parent = F;\n this._left = K;\n\n if (K) K._parent = this;\n\n return F;\n }\n}\n\nexport class TreeNodeEnableIndex extends TreeNode {\n _subTreeSize = 1;\n /**\n * @description Rotate left and do recount.\n * @returns TreeNode about moved to original position after rotation.\n */\n _rotateLeft() {\n const parent = super._rotateLeft() as TreeNodeEnableIndex;\n this._recount();\n parent._recount();\n return parent;\n }\n /**\n * @description Rotate right and do recount.\n * @returns TreeNode about moved to original position after rotation.\n */\n _rotateRight() {\n const parent = super._rotateRight() as TreeNodeEnableIndex;\n this._recount();\n parent._recount();\n return parent;\n }\n _recount() {\n this._subTreeSize = 1;\n if (this._left) {\n this._subTreeSize += (this._left as TreeNodeEnableIndex)._subTreeSize;\n }\n if (this._right) {\n this._subTreeSize += (this._right as TreeNodeEnableIndex)._subTreeSize;\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nvar ContainerIterator = /** @class */ (function () {\n /**\n * @internal\n */\n function ContainerIterator(iteratorType) {\n if (iteratorType === void 0) { iteratorType = 0 /* IteratorType.NORMAL */; }\n this.iteratorType = iteratorType;\n }\n /**\n * @param iter - The other iterator you want to compare.\n * @returns Whether this equals to obj.\n * @example\n * container.find(1).equals(container.end());\n */\n ContainerIterator.prototype.equals = function (iter) {\n return this._node === iter._node;\n };\n return ContainerIterator;\n}());\nexport { ContainerIterator };\nvar Base = /** @class */ (function () {\n function Base() {\n /**\n * @description Container's size.\n * @internal\n */\n this._length = 0;\n }\n Object.defineProperty(Base.prototype, \"length\", {\n /**\n * @returns The size of the container.\n * @example\n * const container = new Vector([1, 2]);\n * console.log(container.length); // 2\n */\n get: function () {\n return this._length;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @returns The size of the container.\n * @example\n * const container = new Vector([1, 2]);\n * console.log(container.size()); // 2\n */\n Base.prototype.size = function () {\n return this._length;\n };\n /**\n * @returns Whether the container is empty.\n * @example\n * container.clear();\n * console.log(container.empty()); // true\n */\n Base.prototype.empty = function () {\n return this._length === 0;\n };\n return Base;\n}());\nexport { Base };\nvar Container = /** @class */ (function (_super) {\n __extends(Container, _super);\n function Container() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Container;\n}(Base));\nexport { Container };\n","/**\n * @description The iterator type including `NORMAL` and `REVERSE`.\n */\nexport const enum IteratorType {\n NORMAL = 0,\n REVERSE = 1\n}\n\nexport abstract class ContainerIterator {\n /**\n * @description The container pointed to by the iterator.\n */\n abstract readonly container: Container;\n /**\n * @internal\n */\n abstract _node: unknown;\n /**\n * @description Iterator's type.\n * @example\n * console.log(container.end().iteratorType === IteratorType.NORMAL); // true\n */\n readonly iteratorType: IteratorType;\n /**\n * @internal\n */\n protected constructor(iteratorType = IteratorType.NORMAL) {\n this.iteratorType = iteratorType;\n }\n /**\n * @param iter - The other iterator you want to compare.\n * @returns Whether this equals to obj.\n * @example\n * container.find(1).equals(container.end());\n */\n equals(iter: ContainerIterator) {\n return this._node === iter._node;\n }\n /**\n * @description Pointers to element.\n * @returns The value of the pointer's element.\n * @example\n * const val = container.begin().pointer;\n */\n abstract get pointer(): T;\n /**\n * @description Set pointer's value (some containers are unavailable).\n * @param newValue - The new value you want to set.\n * @example\n * (>container).begin().pointer = 1;\n */\n abstract set pointer(newValue: T);\n /**\n * @description Move `this` iterator to pre.\n * @returns The iterator's self.\n * @example\n * const iter = container.find(1); // container = [0, 1]\n * const pre = iter.pre();\n * console.log(pre === iter); // true\n * console.log(pre.equals(iter)); // true\n * console.log(pre.pointer, iter.pointer); // 0, 0\n */\n abstract pre(): this;\n /**\n * @description Move `this` iterator to next.\n * @returns The iterator's self.\n * @example\n * const iter = container.find(1); // container = [1, 2]\n * const next = iter.next();\n * console.log(next === iter); // true\n * console.log(next.equals(iter)); // true\n * console.log(next.pointer, iter.pointer); // 2, 2\n */\n abstract next(): this;\n /**\n * @description Get a copy of itself.\n * @returns The copy of self.\n * @example\n * const iter = container.find(1); // container = [1, 2]\n * const next = iter.copy().next();\n * console.log(next === iter); // false\n * console.log(next.equals(iter)); // false\n * console.log(next.pointer, iter.pointer); // 2, 1\n */\n abstract copy(): ContainerIterator;\n}\n\nexport abstract class Base {\n /**\n * @description Container's size.\n * @internal\n */\n protected _length = 0;\n /**\n * @returns The size of the container.\n * @example\n * const container = new Vector([1, 2]);\n * console.log(container.length); // 2\n */\n get length() {\n return this._length;\n }\n /**\n * @returns The size of the container.\n * @example\n * const container = new Vector([1, 2]);\n * console.log(container.size()); // 2\n */\n size() {\n return this._length;\n }\n /**\n * @returns Whether the container is empty.\n * @example\n * container.clear();\n * console.log(container.empty()); // true\n */\n empty() {\n return this._length === 0;\n }\n /**\n * @description Clear the container.\n * @example\n * container.clear();\n * console.log(container.empty()); // true\n */\n abstract clear(): void;\n}\n\nexport abstract class Container extends Base {\n /**\n * @returns Iterator pointing to the beginning element.\n * @example\n * const begin = container.begin();\n * const end = container.end();\n * for (const it = begin; !it.equals(end); it.next()) {\n * doSomething(it.pointer);\n * }\n */\n abstract begin(): ContainerIterator;\n /**\n * @returns Iterator pointing to the super end like c++.\n * @example\n * const begin = container.begin();\n * const end = container.end();\n * for (const it = begin; !it.equals(end); it.next()) {\n * doSomething(it.pointer);\n * }\n */\n abstract end(): ContainerIterator;\n /**\n * @returns Iterator pointing to the end element.\n * @example\n * const rBegin = container.rBegin();\n * const rEnd = container.rEnd();\n * for (const it = rBegin; !it.equals(rEnd); it.next()) {\n * doSomething(it.pointer);\n * }\n */\n abstract rBegin(): ContainerIterator;\n /**\n * @returns Iterator pointing to the super begin like c++.\n * @example\n * const rBegin = container.rBegin();\n * const rEnd = container.rEnd();\n * for (const it = rBegin; !it.equals(rEnd); it.next()) {\n * doSomething(it.pointer);\n * }\n */\n abstract rEnd(): ContainerIterator;\n /**\n * @returns The first element of the container.\n */\n abstract front(): T | undefined;\n /**\n * @returns The last element of the container.\n */\n abstract back(): T | undefined;\n /**\n * @param element - The element you want to find.\n * @returns An iterator pointing to the element if found, or super end if not found.\n * @example\n * container.find(1).equals(container.end());\n */\n abstract find(element: T): ContainerIterator;\n /**\n * @description Iterate over all elements in the container.\n * @param callback - Callback function like Array.forEach.\n * @example\n * container.forEach((element, index) => console.log(element, index));\n */\n abstract forEach(callback: (element: T, index: number, container: Container) => void): void;\n /**\n * @description Gets the value of the element at the specified position.\n * @example\n * const val = container.getElementByPos(-1); // throw a RangeError\n */\n abstract getElementByPos(pos: number): T;\n /**\n * @description Removes the element at the specified position.\n * @param pos - The element's position you want to remove.\n * @returns The container length after erasing.\n * @example\n * container.eraseElementByPos(-1); // throw a RangeError\n */\n abstract eraseElementByPos(pos: number): number;\n /**\n * @description Removes element by iterator and move `iter` to next.\n * @param iter - The iterator you want to erase.\n * @returns The next iterator.\n * @example\n * container.eraseElementByIterator(container.begin());\n * container.eraseElementByIterator(container.end()); // throw a RangeError\n */\n abstract eraseElementByIterator(\n iter: ContainerIterator\n ): ContainerIterator;\n /**\n * @description Using for `for...of` syntax like Array.\n * @example\n * for (const element of container) {\n * console.log(element);\n * }\n */\n abstract [Symbol.iterator](): Generator;\n}\n\n/**\n * @description The initial data type passed in when initializing the container.\n */\nexport type initContainer = {\n size?: number | (() => number);\n length?: number;\n forEach: (callback: (el: T) => void) => void;\n}\n","/**\n * @description Throw an iterator access error.\n * @internal\n */\nexport function throwIteratorAccessError() {\n throw new RangeError('Iterator access denied!');\n}\n","/**\n * @description Throw an iterator access error.\n * @internal\n */\nexport function throwIteratorAccessError() {\n throw new RangeError('Iterator access denied!');\n}\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nvar __read = (this && this.__read) || function (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};\nvar __values = (this && this.__values) || function(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};\nimport { TreeNode, TreeNodeEnableIndex } from './TreeNode';\nimport { Container } from \"../../ContainerBase\";\nimport $checkWithinAccessParams from \"../../../utils/checkParams.macro\";\nimport { throwIteratorAccessError } from \"../../../utils/throwError\";\nvar TreeContainer = /** @class */ (function (_super) {\n __extends(TreeContainer, _super);\n /**\n * @internal\n */\n function TreeContainer(cmp, enableIndex) {\n if (cmp === void 0) { cmp = function (x, y) {\n if (x < y)\n return -1;\n if (x > y)\n return 1;\n return 0;\n }; }\n if (enableIndex === void 0) { enableIndex = false; }\n var _this = _super.call(this) || this;\n /**\n * @internal\n */\n _this._root = undefined;\n _this._cmp = cmp;\n if (enableIndex) {\n _this._TreeNodeClass = TreeNodeEnableIndex;\n _this._set = function (key, value, hint) {\n var curNode = this._preSet(key, value, hint);\n if (curNode) {\n var p = curNode._parent;\n while (p !== this._header) {\n p._subTreeSize += 1;\n p = p._parent;\n }\n var nodeList = this._insertNodeSelfBalance(curNode);\n if (nodeList) {\n var _a = nodeList, parentNode = _a.parentNode, grandParent = _a.grandParent, curNode_1 = _a.curNode;\n parentNode._recount();\n grandParent._recount();\n curNode_1._recount();\n }\n }\n return this._length;\n };\n _this._eraseNode = function (curNode) {\n var p = this._preEraseNode(curNode);\n while (p !== this._header) {\n p._subTreeSize -= 1;\n p = p._parent;\n }\n };\n }\n else {\n _this._TreeNodeClass = TreeNode;\n _this._set = function (key, value, hint) {\n var curNode = this._preSet(key, value, hint);\n if (curNode)\n this._insertNodeSelfBalance(curNode);\n return this._length;\n };\n _this._eraseNode = _this._preEraseNode;\n }\n _this._header = new _this._TreeNodeClass();\n return _this;\n }\n /**\n * @internal\n */\n TreeContainer.prototype._lowerBound = function (curNode, key) {\n var resNode = this._header;\n while (curNode) {\n var cmpResult = this._cmp(curNode._key, key);\n if (cmpResult < 0) {\n curNode = curNode._right;\n }\n else if (cmpResult > 0) {\n resNode = curNode;\n curNode = curNode._left;\n }\n else\n return curNode;\n }\n return resNode;\n };\n /**\n * @internal\n */\n TreeContainer.prototype._upperBound = function (curNode, key) {\n var resNode = this._header;\n while (curNode) {\n var cmpResult = this._cmp(curNode._key, key);\n if (cmpResult <= 0) {\n curNode = curNode._right;\n }\n else {\n resNode = curNode;\n curNode = curNode._left;\n }\n }\n return resNode;\n };\n /**\n * @internal\n */\n TreeContainer.prototype._reverseLowerBound = function (curNode, key) {\n var resNode = this._header;\n while (curNode) {\n var cmpResult = this._cmp(curNode._key, key);\n if (cmpResult < 0) {\n resNode = curNode;\n curNode = curNode._right;\n }\n else if (cmpResult > 0) {\n curNode = curNode._left;\n }\n else\n return curNode;\n }\n return resNode;\n };\n /**\n * @internal\n */\n TreeContainer.prototype._reverseUpperBound = function (curNode, key) {\n var resNode = this._header;\n while (curNode) {\n var cmpResult = this._cmp(curNode._key, key);\n if (cmpResult < 0) {\n resNode = curNode;\n curNode = curNode._right;\n }\n else {\n curNode = curNode._left;\n }\n }\n return resNode;\n };\n /**\n * @internal\n */\n TreeContainer.prototype._eraseNodeSelfBalance = function (curNode) {\n while (true) {\n var parentNode = curNode._parent;\n if (parentNode === this._header)\n return;\n if (curNode._color === 1 /* TreeNodeColor.RED */) {\n curNode._color = 0 /* TreeNodeColor.BLACK */;\n return;\n }\n if (curNode === parentNode._left) {\n var brother = parentNode._right;\n if (brother._color === 1 /* TreeNodeColor.RED */) {\n brother._color = 0 /* TreeNodeColor.BLACK */;\n parentNode._color = 1 /* TreeNodeColor.RED */;\n if (parentNode === this._root) {\n this._root = parentNode._rotateLeft();\n }\n else\n parentNode._rotateLeft();\n }\n else {\n if (brother._right && brother._right._color === 1 /* TreeNodeColor.RED */) {\n brother._color = parentNode._color;\n parentNode._color = 0 /* TreeNodeColor.BLACK */;\n brother._right._color = 0 /* TreeNodeColor.BLACK */;\n if (parentNode === this._root) {\n this._root = parentNode._rotateLeft();\n }\n else\n parentNode._rotateLeft();\n return;\n }\n else if (brother._left && brother._left._color === 1 /* TreeNodeColor.RED */) {\n brother._color = 1 /* TreeNodeColor.RED */;\n brother._left._color = 0 /* TreeNodeColor.BLACK */;\n brother._rotateRight();\n }\n else {\n brother._color = 1 /* TreeNodeColor.RED */;\n curNode = parentNode;\n }\n }\n }\n else {\n var brother = parentNode._left;\n if (brother._color === 1 /* TreeNodeColor.RED */) {\n brother._color = 0 /* TreeNodeColor.BLACK */;\n parentNode._color = 1 /* TreeNodeColor.RED */;\n if (parentNode === this._root) {\n this._root = parentNode._rotateRight();\n }\n else\n parentNode._rotateRight();\n }\n else {\n if (brother._left && brother._left._color === 1 /* TreeNodeColor.RED */) {\n brother._color = parentNode._color;\n parentNode._color = 0 /* TreeNodeColor.BLACK */;\n brother._left._color = 0 /* TreeNodeColor.BLACK */;\n if (parentNode === this._root) {\n this._root = parentNode._rotateRight();\n }\n else\n parentNode._rotateRight();\n return;\n }\n else if (brother._right && brother._right._color === 1 /* TreeNodeColor.RED */) {\n brother._color = 1 /* TreeNodeColor.RED */;\n brother._right._color = 0 /* TreeNodeColor.BLACK */;\n brother._rotateLeft();\n }\n else {\n brother._color = 1 /* TreeNodeColor.RED */;\n curNode = parentNode;\n }\n }\n }\n }\n };\n /**\n * @internal\n */\n TreeContainer.prototype._preEraseNode = function (curNode) {\n var _a, _b;\n if (this._length === 1) {\n this.clear();\n return this._header;\n }\n var swapNode = curNode;\n while (swapNode._left || swapNode._right) {\n if (swapNode._right) {\n swapNode = swapNode._right;\n while (swapNode._left)\n swapNode = swapNode._left;\n }\n else {\n swapNode = swapNode._left;\n }\n _a = __read([swapNode._key, curNode._key], 2), curNode._key = _a[0], swapNode._key = _a[1];\n _b = __read([swapNode._value, curNode._value], 2), curNode._value = _b[0], swapNode._value = _b[1];\n curNode = swapNode;\n }\n if (this._header._left === swapNode) {\n this._header._left = swapNode._parent;\n }\n else if (this._header._right === swapNode) {\n this._header._right = swapNode._parent;\n }\n this._eraseNodeSelfBalance(swapNode);\n var _parent = swapNode._parent;\n if (swapNode === _parent._left) {\n _parent._left = undefined;\n }\n else\n _parent._right = undefined;\n this._length -= 1;\n this._root._color = 0 /* TreeNodeColor.BLACK */;\n return _parent;\n };\n /**\n * @internal\n */\n TreeContainer.prototype._inOrderTraversal = function (curNode, callback) {\n if (curNode === undefined)\n return false;\n var ifReturn = this._inOrderTraversal(curNode._left, callback);\n if (ifReturn)\n return true;\n if (callback(curNode))\n return true;\n return this._inOrderTraversal(curNode._right, callback);\n };\n /**\n * @internal\n */\n TreeContainer.prototype._insertNodeSelfBalance = function (curNode) {\n while (true) {\n var parentNode = curNode._parent;\n if (parentNode._color === 0 /* TreeNodeColor.BLACK */)\n return;\n var grandParent = parentNode._parent;\n if (parentNode === grandParent._left) {\n var uncle = grandParent._right;\n if (uncle && uncle._color === 1 /* TreeNodeColor.RED */) {\n uncle._color = parentNode._color = 0 /* TreeNodeColor.BLACK */;\n if (grandParent === this._root)\n return;\n grandParent._color = 1 /* TreeNodeColor.RED */;\n curNode = grandParent;\n continue;\n }\n else if (curNode === parentNode._right) {\n curNode._color = 0 /* TreeNodeColor.BLACK */;\n if (curNode._left)\n curNode._left._parent = parentNode;\n if (curNode._right)\n curNode._right._parent = grandParent;\n parentNode._right = curNode._left;\n grandParent._left = curNode._right;\n curNode._left = parentNode;\n curNode._right = grandParent;\n if (grandParent === this._root) {\n this._root = curNode;\n this._header._parent = curNode;\n }\n else {\n var GP = grandParent._parent;\n if (GP._left === grandParent) {\n GP._left = curNode;\n }\n else\n GP._right = curNode;\n }\n curNode._parent = grandParent._parent;\n parentNode._parent = curNode;\n grandParent._parent = curNode;\n grandParent._color = 1 /* TreeNodeColor.RED */;\n return { parentNode: parentNode, grandParent: grandParent, curNode: curNode };\n }\n else {\n parentNode._color = 0 /* TreeNodeColor.BLACK */;\n if (grandParent === this._root) {\n this._root = grandParent._rotateRight();\n }\n else\n grandParent._rotateRight();\n grandParent._color = 1 /* TreeNodeColor.RED */;\n }\n }\n else {\n var uncle = grandParent._left;\n if (uncle && uncle._color === 1 /* TreeNodeColor.RED */) {\n uncle._color = parentNode._color = 0 /* TreeNodeColor.BLACK */;\n if (grandParent === this._root)\n return;\n grandParent._color = 1 /* TreeNodeColor.RED */;\n curNode = grandParent;\n continue;\n }\n else if (curNode === parentNode._left) {\n curNode._color = 0 /* TreeNodeColor.BLACK */;\n if (curNode._left)\n curNode._left._parent = grandParent;\n if (curNode._right)\n curNode._right._parent = parentNode;\n grandParent._right = curNode._left;\n parentNode._left = curNode._right;\n curNode._left = grandParent;\n curNode._right = parentNode;\n if (grandParent === this._root) {\n this._root = curNode;\n this._header._parent = curNode;\n }\n else {\n var GP = grandParent._parent;\n if (GP._left === grandParent) {\n GP._left = curNode;\n }\n else\n GP._right = curNode;\n }\n curNode._parent = grandParent._parent;\n parentNode._parent = curNode;\n grandParent._parent = curNode;\n grandParent._color = 1 /* TreeNodeColor.RED */;\n return { parentNode: parentNode, grandParent: grandParent, curNode: curNode };\n }\n else {\n parentNode._color = 0 /* TreeNodeColor.BLACK */;\n if (grandParent === this._root) {\n this._root = grandParent._rotateLeft();\n }\n else\n grandParent._rotateLeft();\n grandParent._color = 1 /* TreeNodeColor.RED */;\n }\n }\n return;\n }\n };\n /**\n * @internal\n */\n TreeContainer.prototype._preSet = function (key, value, hint) {\n if (this._root === undefined) {\n this._length += 1;\n this._root = new this._TreeNodeClass(key, value);\n this._root._color = 0 /* TreeNodeColor.BLACK */;\n this._root._parent = this._header;\n this._header._parent = this._root;\n this._header._left = this._root;\n this._header._right = this._root;\n return;\n }\n var curNode;\n var minNode = this._header._left;\n var compareToMin = this._cmp(minNode._key, key);\n if (compareToMin === 0) {\n minNode._value = value;\n return;\n }\n else if (compareToMin > 0) {\n minNode._left = new this._TreeNodeClass(key, value);\n minNode._left._parent = minNode;\n curNode = minNode._left;\n this._header._left = curNode;\n }\n else {\n var maxNode = this._header._right;\n var compareToMax = this._cmp(maxNode._key, key);\n if (compareToMax === 0) {\n maxNode._value = value;\n return;\n }\n else if (compareToMax < 0) {\n maxNode._right = new this._TreeNodeClass(key, value);\n maxNode._right._parent = maxNode;\n curNode = maxNode._right;\n this._header._right = curNode;\n }\n else {\n if (hint !== undefined) {\n var iterNode = hint._node;\n if (iterNode !== this._header) {\n var iterCmpRes = this._cmp(iterNode._key, key);\n if (iterCmpRes === 0) {\n iterNode._value = value;\n return;\n }\n else /* istanbul ignore else */ if (iterCmpRes > 0) {\n var preNode = iterNode._pre();\n var preCmpRes = this._cmp(preNode._key, key);\n if (preCmpRes === 0) {\n preNode._value = value;\n return;\n }\n else if (preCmpRes < 0) {\n curNode = new this._TreeNodeClass(key, value);\n if (preNode._right === undefined) {\n preNode._right = curNode;\n curNode._parent = preNode;\n }\n else {\n iterNode._left = curNode;\n curNode._parent = iterNode;\n }\n }\n }\n }\n }\n if (curNode === undefined) {\n curNode = this._root;\n while (true) {\n var cmpResult = this._cmp(curNode._key, key);\n if (cmpResult > 0) {\n if (curNode._left === undefined) {\n curNode._left = new this._TreeNodeClass(key, value);\n curNode._left._parent = curNode;\n curNode = curNode._left;\n break;\n }\n curNode = curNode._left;\n }\n else if (cmpResult < 0) {\n if (curNode._right === undefined) {\n curNode._right = new this._TreeNodeClass(key, value);\n curNode._right._parent = curNode;\n curNode = curNode._right;\n break;\n }\n curNode = curNode._right;\n }\n else {\n curNode._value = value;\n return;\n }\n }\n }\n }\n }\n this._length += 1;\n return curNode;\n };\n /**\n * @internal\n */\n TreeContainer.prototype._findElementNode = function (curNode, key) {\n while (curNode) {\n var cmpResult = this._cmp(curNode._key, key);\n if (cmpResult < 0) {\n curNode = curNode._right;\n }\n else if (cmpResult > 0) {\n curNode = curNode._left;\n }\n else\n return curNode;\n }\n return curNode || this._header;\n };\n TreeContainer.prototype.clear = function () {\n this._length = 0;\n this._root = undefined;\n this._header._parent = undefined;\n this._header._left = this._header._right = undefined;\n };\n /**\n * @description Update node's key by iterator.\n * @param iter - The iterator you want to change.\n * @param key - The key you want to update.\n * @returns Whether the modification is successful.\n * @example\n * const st = new orderedSet([1, 2, 5]);\n * const iter = st.find(2);\n * st.updateKeyByIterator(iter, 3); // then st will become [1, 3, 5]\n */\n TreeContainer.prototype.updateKeyByIterator = function (iter, key) {\n var node = iter._node;\n if (node === this._header) {\n throwIteratorAccessError();\n }\n if (this._length === 1) {\n node._key = key;\n return true;\n }\n if (node === this._header._left) {\n if (this._cmp(node._next()._key, key) > 0) {\n node._key = key;\n return true;\n }\n return false;\n }\n if (node === this._header._right) {\n if (this._cmp(node._pre()._key, key) < 0) {\n node._key = key;\n return true;\n }\n return false;\n }\n var preKey = node._pre()._key;\n if (this._cmp(preKey, key) >= 0)\n return false;\n var nextKey = node._next()._key;\n if (this._cmp(nextKey, key) <= 0)\n return false;\n node._key = key;\n return true;\n };\n TreeContainer.prototype.eraseElementByPos = function (pos) {\n if (pos < 0 || pos > this._length - 1) {\n throw new RangeError();\n }\n var index = 0;\n var self = this;\n this._inOrderTraversal(this._root, function (curNode) {\n if (pos === index) {\n self._eraseNode(curNode);\n return true;\n }\n index += 1;\n return false;\n });\n return this._length;\n };\n /**\n * @description Remove the element of the specified key.\n * @param key - The key you want to remove.\n * @returns Whether erase successfully.\n */\n TreeContainer.prototype.eraseElementByKey = function (key) {\n if (this._length === 0)\n return false;\n var curNode = this._findElementNode(this._root, key);\n if (curNode === this._header)\n return false;\n this._eraseNode(curNode);\n return true;\n };\n TreeContainer.prototype.eraseElementByIterator = function (iter) {\n var node = iter._node;\n if (node === this._header) {\n throwIteratorAccessError();\n }\n var hasNoRight = node._right === undefined;\n var isNormal = iter.iteratorType === 0 /* IteratorType.NORMAL */;\n // For the normal iterator, the `next` node will be swapped to `this` node when has right.\n if (isNormal) {\n // So we should move it to next when it's right is null.\n if (hasNoRight)\n iter.next();\n }\n else {\n // For the reverse iterator, only when it doesn't have right and has left the `next` node will be swapped.\n // So when it has right, or it is a leaf node we should move it to `next`.\n if (!hasNoRight || node._left === undefined)\n iter.next();\n }\n this._eraseNode(node);\n return iter;\n };\n TreeContainer.prototype.forEach = function (callback) {\n var e_1, _a;\n var index = 0;\n try {\n for (var _b = __values(this), _c = _b.next(); !_c.done; _c = _b.next()) {\n var element = _c.value;\n callback(element, index++, this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n TreeContainer.prototype.getElementByPos = function (pos) {\n var e_2, _a;\n if (pos < 0 || pos > this._length - 1) {\n throw new RangeError();\n }\n var res;\n var index = 0;\n try {\n for (var _b = __values(this), _c = _b.next(); !_c.done; _c = _b.next()) {\n var element = _c.value;\n if (index === pos) {\n res = element;\n break;\n }\n index += 1;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return res;\n };\n /**\n * @description Get the height of the tree.\n * @returns Number about the height of the RB-tree.\n */\n TreeContainer.prototype.getHeight = function () {\n if (this._length === 0)\n return 0;\n var traversal = function (curNode) {\n if (!curNode)\n return 0;\n return Math.max(traversal(curNode._left), traversal(curNode._right)) + 1;\n };\n return traversal(this._root);\n };\n return TreeContainer;\n}(Container));\nexport default TreeContainer;\n","import type TreeIterator from './TreeIterator';\nimport { TreeNode, TreeNodeColor, TreeNodeEnableIndex } from './TreeNode';\nimport { Container, IteratorType } from '@/container/ContainerBase';\nimport $checkWithinAccessParams from '@/utils/checkParams.macro';\nimport { throwIteratorAccessError } from '@/utils/throwError';\n\nabstract class TreeContainer extends Container {\n /**\n * @internal\n */\n protected _root: TreeNode | undefined = undefined;\n /**\n * @internal\n */\n protected _header: TreeNode;\n /**\n * @internal\n */\n protected readonly _cmp: (x: K, y: K) => number;\n /**\n * @internal\n */\n protected readonly _TreeNodeClass: typeof TreeNode | typeof TreeNodeEnableIndex;\n /**\n * @internal\n */\n protected readonly _eraseNode: (curNode: TreeNode) => void;\n /**\n * @internal\n */\n protected _set: (key: K, value: V, hint?: TreeIterator) => number;\n /**\n * @internal\n */\n protected constructor(\n cmp: (x: K, y: K) => number =\n function (x: K, y: K) {\n if (x < y) return -1;\n if (x > y) return 1;\n return 0;\n },\n enableIndex = false\n ) {\n super();\n this._cmp = cmp;\n if (enableIndex) {\n this._TreeNodeClass = TreeNodeEnableIndex;\n this._set = function (key, value, hint) {\n const curNode = this._preSet(key, value, hint);\n if (curNode) {\n let p = curNode._parent as TreeNodeEnableIndex;\n while (p !== this._header) {\n p._subTreeSize += 1;\n p = p._parent as TreeNodeEnableIndex;\n }\n const nodeList = this._insertNodeSelfBalance(curNode);\n if (nodeList) {\n const {\n parentNode,\n grandParent,\n curNode\n } = nodeList as unknown as Record>;\n parentNode._recount();\n grandParent._recount();\n curNode._recount();\n }\n }\n return this._length;\n };\n this._eraseNode = function (curNode) {\n let p = this._preEraseNode(curNode) as TreeNodeEnableIndex;\n while (p !== this._header) {\n p._subTreeSize -= 1;\n p = p._parent as TreeNodeEnableIndex;\n }\n };\n } else {\n this._TreeNodeClass = TreeNode;\n this._set = function (key, value, hint) {\n const curNode = this._preSet(key, value, hint);\n if (curNode) this._insertNodeSelfBalance(curNode);\n return this._length;\n };\n this._eraseNode = this._preEraseNode;\n }\n this._header = new this._TreeNodeClass();\n }\n /**\n * @internal\n */\n protected _lowerBound(curNode: TreeNode | undefined, key: K) {\n let resNode = this._header;\n while (curNode) {\n const cmpResult = this._cmp(curNode._key!, key);\n if (cmpResult < 0) {\n curNode = curNode._right;\n } else if (cmpResult > 0) {\n resNode = curNode;\n curNode = curNode._left;\n } else return curNode;\n }\n return resNode;\n }\n /**\n * @internal\n */\n protected _upperBound(curNode: TreeNode | undefined, key: K) {\n let resNode = this._header;\n while (curNode) {\n const cmpResult = this._cmp(curNode._key!, key);\n if (cmpResult <= 0) {\n curNode = curNode._right;\n } else {\n resNode = curNode;\n curNode = curNode._left;\n }\n }\n return resNode;\n }\n /**\n * @internal\n */\n protected _reverseLowerBound(curNode: TreeNode | undefined, key: K) {\n let resNode = this._header;\n while (curNode) {\n const cmpResult = this._cmp(curNode._key!, key);\n if (cmpResult < 0) {\n resNode = curNode;\n curNode = curNode._right;\n } else if (cmpResult > 0) {\n curNode = curNode._left;\n } else return curNode;\n }\n return resNode;\n }\n /**\n * @internal\n */\n protected _reverseUpperBound(curNode: TreeNode | undefined, key: K) {\n let resNode = this._header;\n while (curNode) {\n const cmpResult = this._cmp(curNode._key!, key);\n if (cmpResult < 0) {\n resNode = curNode;\n curNode = curNode._right;\n } else {\n curNode = curNode._left;\n }\n }\n return resNode;\n }\n /**\n * @internal\n */\n protected _eraseNodeSelfBalance(curNode: TreeNode) {\n while (true) {\n const parentNode = curNode._parent!;\n if (parentNode === this._header) return;\n if (curNode._color === TreeNodeColor.RED) {\n curNode._color = TreeNodeColor.BLACK;\n return;\n }\n if (curNode === parentNode._left) {\n const brother = parentNode._right!;\n if (brother._color === TreeNodeColor.RED) {\n brother._color = TreeNodeColor.BLACK;\n parentNode._color = TreeNodeColor.RED;\n if (parentNode === this._root) {\n this._root = parentNode._rotateLeft();\n } else parentNode._rotateLeft();\n } else {\n if (brother._right && brother._right._color === TreeNodeColor.RED) {\n brother._color = parentNode._color;\n parentNode._color = TreeNodeColor.BLACK;\n brother._right._color = TreeNodeColor.BLACK;\n if (parentNode === this._root) {\n this._root = parentNode._rotateLeft();\n } else parentNode._rotateLeft();\n return;\n } else if (brother._left && brother._left._color === TreeNodeColor.RED) {\n brother._color = TreeNodeColor.RED;\n brother._left._color = TreeNodeColor.BLACK;\n brother._rotateRight();\n } else {\n brother._color = TreeNodeColor.RED;\n curNode = parentNode;\n }\n }\n } else {\n const brother = parentNode._left!;\n if (brother._color === TreeNodeColor.RED) {\n brother._color = TreeNodeColor.BLACK;\n parentNode._color = TreeNodeColor.RED;\n if (parentNode === this._root) {\n this._root = parentNode._rotateRight();\n } else parentNode._rotateRight();\n } else {\n if (brother._left && brother._left._color === TreeNodeColor.RED) {\n brother._color = parentNode._color;\n parentNode._color = TreeNodeColor.BLACK;\n brother._left._color = TreeNodeColor.BLACK;\n if (parentNode === this._root) {\n this._root = parentNode._rotateRight();\n } else parentNode._rotateRight();\n return;\n } else if (brother._right && brother._right._color === TreeNodeColor.RED) {\n brother._color = TreeNodeColor.RED;\n brother._right._color = TreeNodeColor.BLACK;\n brother._rotateLeft();\n } else {\n brother._color = TreeNodeColor.RED;\n curNode = parentNode;\n }\n }\n }\n }\n }\n /**\n * @internal\n */\n protected _preEraseNode(curNode: TreeNode) {\n if (this._length === 1) {\n this.clear();\n return this._header;\n }\n let swapNode = curNode;\n while (swapNode._left || swapNode._right) {\n if (swapNode._right) {\n swapNode = swapNode._right;\n while (swapNode._left) swapNode = swapNode._left;\n } else {\n swapNode = swapNode._left!;\n }\n [curNode._key, swapNode._key] = [swapNode._key, curNode._key];\n [curNode._value, swapNode._value] = [swapNode._value, curNode._value];\n curNode = swapNode;\n }\n if (this._header._left === swapNode) {\n this._header._left = swapNode._parent;\n } else if (this._header._right === swapNode) {\n this._header._right = swapNode._parent;\n }\n this._eraseNodeSelfBalance(swapNode);\n const _parent = swapNode._parent!;\n if (swapNode === _parent._left) {\n _parent._left = undefined;\n } else _parent._right = undefined;\n this._length -= 1;\n this._root!._color = TreeNodeColor.BLACK;\n return _parent;\n }\n /**\n * @internal\n */\n protected _inOrderTraversal(\n curNode: TreeNode | undefined,\n callback: (curNode: TreeNode) => boolean\n ): boolean {\n if (curNode === undefined) return false;\n const ifReturn = this._inOrderTraversal(curNode._left, callback);\n if (ifReturn) return true;\n if (callback(curNode)) return true;\n return this._inOrderTraversal(curNode._right, callback);\n }\n /**\n * @internal\n */\n protected _insertNodeSelfBalance(curNode: TreeNode) {\n while (true) {\n const parentNode = curNode._parent!;\n if (parentNode._color === TreeNodeColor.BLACK) return;\n const grandParent = parentNode._parent!;\n if (parentNode === grandParent._left) {\n const uncle = grandParent._right;\n if (uncle && uncle._color === TreeNodeColor.RED) {\n uncle._color = parentNode._color = TreeNodeColor.BLACK;\n if (grandParent === this._root) return;\n grandParent._color = TreeNodeColor.RED;\n curNode = grandParent;\n continue;\n } else if (curNode === parentNode._right) {\n curNode._color = TreeNodeColor.BLACK;\n if (curNode._left) curNode._left._parent = parentNode;\n if (curNode._right) curNode._right._parent = grandParent;\n parentNode._right = curNode._left;\n grandParent._left = curNode._right;\n curNode._left = parentNode;\n curNode._right = grandParent;\n if (grandParent === this._root) {\n this._root = curNode;\n this._header._parent = curNode;\n } else {\n const GP = grandParent._parent!;\n if (GP._left === grandParent) {\n GP._left = curNode;\n } else GP._right = curNode;\n }\n curNode._parent = grandParent._parent;\n parentNode._parent = curNode;\n grandParent._parent = curNode;\n grandParent._color = TreeNodeColor.RED;\n return { parentNode, grandParent, curNode };\n } else {\n parentNode._color = TreeNodeColor.BLACK;\n if (grandParent === this._root) {\n this._root = grandParent._rotateRight();\n } else grandParent._rotateRight();\n grandParent._color = TreeNodeColor.RED;\n }\n } else {\n const uncle = grandParent._left;\n if (uncle && uncle._color === TreeNodeColor.RED) {\n uncle._color = parentNode._color = TreeNodeColor.BLACK;\n if (grandParent === this._root) return;\n grandParent._color = TreeNodeColor.RED;\n curNode = grandParent;\n continue;\n } else if (curNode === parentNode._left) {\n curNode._color = TreeNodeColor.BLACK;\n if (curNode._left) curNode._left._parent = grandParent;\n if (curNode._right) curNode._right._parent = parentNode;\n grandParent._right = curNode._left;\n parentNode._left = curNode._right;\n curNode._left = grandParent;\n curNode._right = parentNode;\n if (grandParent === this._root) {\n this._root = curNode;\n this._header._parent = curNode;\n } else {\n const GP = grandParent._parent!;\n if (GP._left === grandParent) {\n GP._left = curNode;\n } else GP._right = curNode;\n }\n curNode._parent = grandParent._parent;\n parentNode._parent = curNode;\n grandParent._parent = curNode;\n grandParent._color = TreeNodeColor.RED;\n return { parentNode, grandParent, curNode };\n } else {\n parentNode._color = TreeNodeColor.BLACK;\n if (grandParent === this._root) {\n this._root = grandParent._rotateLeft();\n } else grandParent._rotateLeft();\n grandParent._color = TreeNodeColor.RED;\n }\n }\n return;\n }\n }\n /**\n * @internal\n */\n protected _preSet(key: K, value?: V, hint?: TreeIterator) {\n if (this._root === undefined) {\n this._length += 1;\n this._root = new this._TreeNodeClass(key, value);\n this._root._color = TreeNodeColor.BLACK;\n this._root._parent = this._header;\n this._header._parent = this._root;\n this._header._left = this._root;\n this._header._right = this._root;\n return;\n }\n let curNode;\n const minNode = this._header._left!;\n const compareToMin = this._cmp(minNode._key!, key);\n if (compareToMin === 0) {\n minNode._value = value;\n return;\n } else if (compareToMin > 0) {\n minNode._left = new this._TreeNodeClass(key, value);\n minNode._left._parent = minNode;\n curNode = minNode._left;\n this._header._left = curNode;\n } else {\n const maxNode = this._header._right!;\n const compareToMax = this._cmp(maxNode._key!, key);\n if (compareToMax === 0) {\n maxNode._value = value;\n return;\n } else if (compareToMax < 0) {\n maxNode._right = new this._TreeNodeClass(key, value);\n maxNode._right._parent = maxNode;\n curNode = maxNode._right;\n this._header._right = curNode;\n } else {\n if (hint !== undefined) {\n const iterNode = hint._node;\n if (iterNode !== this._header) {\n const iterCmpRes = this._cmp(iterNode._key!, key);\n if (iterCmpRes === 0) {\n iterNode._value = value;\n return;\n } else /* istanbul ignore else */ if (iterCmpRes > 0) {\n const preNode = iterNode._pre();\n const preCmpRes = this._cmp(preNode._key!, key);\n if (preCmpRes === 0) {\n preNode._value = value;\n return;\n } else if (preCmpRes < 0) {\n curNode = new this._TreeNodeClass(key, value);\n if (preNode._right === undefined) {\n preNode._right = curNode;\n curNode._parent = preNode;\n } else {\n iterNode._left = curNode;\n curNode._parent = iterNode;\n }\n }\n }\n }\n }\n if (curNode === undefined) {\n curNode = this._root;\n while (true) {\n const cmpResult = this._cmp(curNode._key!, key);\n if (cmpResult > 0) {\n if (curNode._left === undefined) {\n curNode._left = new this._TreeNodeClass(key, value);\n curNode._left._parent = curNode;\n curNode = curNode._left;\n break;\n }\n curNode = curNode._left;\n } else if (cmpResult < 0) {\n if (curNode._right === undefined) {\n curNode._right = new this._TreeNodeClass(key, value);\n curNode._right._parent = curNode;\n curNode = curNode._right;\n break;\n }\n curNode = curNode._right;\n } else {\n curNode._value = value;\n return;\n }\n }\n }\n }\n }\n this._length += 1;\n return curNode;\n }\n /**\n * @internal\n */\n protected _findElementNode(curNode: TreeNode | undefined, key: K) {\n while (curNode) {\n const cmpResult = this._cmp(curNode._key!, key);\n if (cmpResult < 0) {\n curNode = curNode._right;\n } else if (cmpResult > 0) {\n curNode = curNode._left;\n } else return curNode;\n }\n return curNode || this._header;\n }\n clear() {\n this._length = 0;\n this._root = undefined;\n this._header._parent = undefined;\n this._header._left = this._header._right = undefined;\n }\n /**\n * @description Update node's key by iterator.\n * @param iter - The iterator you want to change.\n * @param key - The key you want to update.\n * @returns Whether the modification is successful.\n * @example\n * const st = new orderedSet([1, 2, 5]);\n * const iter = st.find(2);\n * st.updateKeyByIterator(iter, 3); // then st will become [1, 3, 5]\n */\n updateKeyByIterator(iter: TreeIterator, key: K): boolean {\n const node = iter._node;\n if (node === this._header) {\n throwIteratorAccessError();\n }\n if (this._length === 1) {\n node._key = key;\n return true;\n }\n if (node === this._header._left) {\n if (this._cmp(node._next()._key!, key) > 0) {\n node._key = key;\n return true;\n }\n return false;\n }\n if (node === this._header._right) {\n if (this._cmp(node._pre()._key!, key) < 0) {\n node._key = key;\n return true;\n }\n return false;\n }\n const preKey = node._pre()._key!;\n if (this._cmp(preKey, key) >= 0) return false;\n const nextKey = node._next()._key!;\n if (this._cmp(nextKey, key) <= 0) return false;\n node._key = key;\n return true;\n }\n eraseElementByPos(pos: number) {\n $checkWithinAccessParams!(pos, 0, this._length - 1);\n let index = 0;\n const self = this;\n this._inOrderTraversal(\n this._root,\n function (curNode) {\n if (pos === index) {\n self._eraseNode(curNode);\n return true;\n }\n index += 1;\n return false;\n });\n return this._length;\n }\n /**\n * @description Remove the element of the specified key.\n * @param key - The key you want to remove.\n * @returns Whether erase successfully.\n */\n eraseElementByKey(key: K) {\n if (this._length === 0) return false;\n const curNode = this._findElementNode(this._root, key);\n if (curNode === this._header) return false;\n this._eraseNode(curNode);\n return true;\n }\n eraseElementByIterator(iter: TreeIterator) {\n const node = iter._node;\n if (node === this._header) {\n throwIteratorAccessError();\n }\n const hasNoRight = node._right === undefined;\n const isNormal = iter.iteratorType === IteratorType.NORMAL;\n // For the normal iterator, the `next` node will be swapped to `this` node when has right.\n if (isNormal) {\n // So we should move it to next when it's right is null.\n if (hasNoRight) iter.next();\n } else {\n // For the reverse iterator, only when it doesn't have right and has left the `next` node will be swapped.\n // So when it has right, or it is a leaf node we should move it to `next`.\n if (!hasNoRight || node._left === undefined) iter.next();\n }\n this._eraseNode(node);\n return iter;\n }\n forEach(callback: (element: K | [K, V], index: number, tree: TreeContainer) => void) {\n let index = 0;\n for (const element of this) callback(element, index++, this);\n }\n getElementByPos(pos: number) {\n $checkWithinAccessParams!(pos, 0, this._length - 1);\n let res;\n let index = 0;\n for (const element of this) {\n if (index === pos) {\n res = element;\n break;\n }\n index += 1;\n }\n return res;\n }\n /**\n * @description Get the height of the tree.\n * @returns Number about the height of the RB-tree.\n */\n getHeight() {\n if (this._length === 0) return 0;\n const traversal =\n function (curNode: TreeNode | undefined): number {\n if (!curNode) return 0;\n return Math.max(traversal(curNode._left), traversal(curNode._right)) + 1;\n };\n return traversal(this._root);\n }\n /**\n * @param key - The given key you want to compare.\n * @returns An iterator to the first element less than the given key.\n */\n abstract reverseUpperBound(key: K): TreeIterator;\n /**\n * @description Union the other tree to self.\n * @param other - The other tree container you want to merge.\n * @returns The size of the tree after union.\n */\n abstract union(other: TreeContainer): number;\n /**\n * @param key - The given key you want to compare.\n * @returns An iterator to the first element not greater than the given key.\n */\n abstract reverseLowerBound(key: K): TreeIterator;\n /**\n * @param key - The given key you want to compare.\n * @returns An iterator to the first element not less than the given key.\n */\n abstract lowerBound(key: K): TreeIterator;\n /**\n * @param key - The given key you want to compare.\n * @returns An iterator to the first element greater than the given key.\n */\n abstract upperBound(key: K): TreeIterator;\n}\n\nexport default TreeContainer;\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nimport { ContainerIterator } from \"../../ContainerBase\";\nimport { throwIteratorAccessError } from \"../../../utils/throwError\";\nvar TreeIterator = /** @class */ (function (_super) {\n __extends(TreeIterator, _super);\n /**\n * @internal\n */\n function TreeIterator(node, header, iteratorType) {\n var _this = _super.call(this, iteratorType) || this;\n _this._node = node;\n _this._header = header;\n if (_this.iteratorType === 0 /* IteratorType.NORMAL */) {\n _this.pre = function () {\n if (this._node === this._header._left) {\n throwIteratorAccessError();\n }\n this._node = this._node._pre();\n return this;\n };\n _this.next = function () {\n if (this._node === this._header) {\n throwIteratorAccessError();\n }\n this._node = this._node._next();\n return this;\n };\n }\n else {\n _this.pre = function () {\n if (this._node === this._header._right) {\n throwIteratorAccessError();\n }\n this._node = this._node._next();\n return this;\n };\n _this.next = function () {\n if (this._node === this._header) {\n throwIteratorAccessError();\n }\n this._node = this._node._pre();\n return this;\n };\n }\n return _this;\n }\n Object.defineProperty(TreeIterator.prototype, \"index\", {\n /**\n * @description Get the sequential index of the iterator in the tree container.
\n * Note:\n * This function only takes effect when the specified tree container `enableIndex = true`.\n * @returns The index subscript of the node in the tree.\n * @example\n * const st = new OrderedSet([1, 2, 3], true);\n * console.log(st.begin().next().index); // 1\n */\n get: function () {\n var _node = this._node;\n var root = this._header._parent;\n if (_node === this._header) {\n if (root) {\n return root._subTreeSize - 1;\n }\n return 0;\n }\n var index = 0;\n if (_node._left) {\n index += _node._left._subTreeSize;\n }\n while (_node !== root) {\n var _parent = _node._parent;\n if (_node === _parent._right) {\n index += 1;\n if (_parent._left) {\n index += _parent._left._subTreeSize;\n }\n }\n _node = _parent;\n }\n return index;\n },\n enumerable: false,\n configurable: true\n });\n return TreeIterator;\n}(ContainerIterator));\nexport default TreeIterator;\n","import { TreeNode } from './TreeNode';\nimport type { TreeNodeEnableIndex } from './TreeNode';\nimport { ContainerIterator, IteratorType } from '@/container/ContainerBase';\nimport TreeContainer from '@/container/TreeContainer/Base/index';\nimport { throwIteratorAccessError } from '@/utils/throwError';\n\nabstract class TreeIterator extends ContainerIterator {\n abstract readonly container: TreeContainer;\n /**\n * @internal\n */\n _node: TreeNode;\n /**\n * @internal\n */\n protected _header: TreeNode;\n /**\n * @internal\n */\n protected constructor(\n node: TreeNode,\n header: TreeNode,\n iteratorType?: IteratorType\n ) {\n super(iteratorType);\n this._node = node;\n this._header = header;\n if (this.iteratorType === IteratorType.NORMAL) {\n this.pre = function () {\n if (this._node === this._header._left) {\n throwIteratorAccessError();\n }\n this._node = this._node._pre();\n return this;\n };\n\n this.next = function () {\n if (this._node === this._header) {\n throwIteratorAccessError();\n }\n this._node = this._node._next();\n return this;\n };\n } else {\n this.pre = function () {\n if (this._node === this._header._right) {\n throwIteratorAccessError();\n }\n this._node = this._node._next();\n return this;\n };\n\n this.next = function () {\n if (this._node === this._header) {\n throwIteratorAccessError();\n }\n this._node = this._node._pre();\n return this;\n };\n }\n }\n /**\n * @description Get the sequential index of the iterator in the tree container.
\n * Note:\n * This function only takes effect when the specified tree container `enableIndex = true`.\n * @returns The index subscript of the node in the tree.\n * @example\n * const st = new OrderedSet([1, 2, 3], true);\n * console.log(st.begin().next().index); // 1\n */\n get index() {\n let _node = this._node as TreeNodeEnableIndex;\n const root = this._header._parent as TreeNodeEnableIndex;\n if (_node === this._header) {\n if (root) {\n return root._subTreeSize - 1;\n }\n return 0;\n }\n let index = 0;\n if (_node._left) {\n index += (_node._left as TreeNodeEnableIndex)._subTreeSize;\n }\n while (_node !== root) {\n const _parent = _node._parent as TreeNodeEnableIndex;\n if (_node === _parent._right) {\n index += 1;\n if (_parent._left) {\n index += (_parent._left as TreeNodeEnableIndex)._subTreeSize;\n }\n }\n _node = _parent;\n }\n return index;\n }\n // @ts-ignore\n pre(): this;\n // @ts-ignore\n next(): this;\n}\n\nexport default TreeIterator;\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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};\nvar __values = (this && this.__values) || function(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};\nimport TreeContainer from './Base';\nimport TreeIterator from './Base/TreeIterator';\nimport { throwIteratorAccessError } from \"../../utils/throwError\";\nvar OrderedSetIterator = /** @class */ (function (_super) {\n __extends(OrderedSetIterator, _super);\n function OrderedSetIterator(node, header, container, iteratorType) {\n var _this = _super.call(this, node, header, iteratorType) || this;\n _this.container = container;\n return _this;\n }\n Object.defineProperty(OrderedSetIterator.prototype, \"pointer\", {\n get: function () {\n if (this._node === this._header) {\n throwIteratorAccessError();\n }\n return this._node._key;\n },\n enumerable: false,\n configurable: true\n });\n OrderedSetIterator.prototype.copy = function () {\n return new OrderedSetIterator(this._node, this._header, this.container, this.iteratorType);\n };\n return OrderedSetIterator;\n}(TreeIterator));\nvar OrderedSet = /** @class */ (function (_super) {\n __extends(OrderedSet, _super);\n /**\n * @param container - The initialization container.\n * @param cmp - The compare function.\n * @param enableIndex - Whether to enable iterator indexing function.\n * @example\n * new OrderedSet();\n * new OrderedSet([0, 1, 2]);\n * new OrderedSet([0, 1, 2], (x, y) => x - y);\n * new OrderedSet([0, 1, 2], (x, y) => x - y, true);\n */\n function OrderedSet(container, cmp, enableIndex) {\n if (container === void 0) { container = []; }\n var _this = _super.call(this, cmp, enableIndex) || this;\n var self = _this;\n container.forEach(function (el) {\n self.insert(el);\n });\n return _this;\n }\n /**\n * @internal\n */\n OrderedSet.prototype._iterationFunc = function (curNode) {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (curNode === undefined)\n return [2 /*return*/];\n return [5 /*yield**/, __values(this._iterationFunc(curNode._left))];\n case 1:\n _a.sent();\n return [4 /*yield*/, curNode._key];\n case 2:\n _a.sent();\n return [5 /*yield**/, __values(this._iterationFunc(curNode._right))];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n };\n OrderedSet.prototype.begin = function () {\n return new OrderedSetIterator(this._header._left || this._header, this._header, this);\n };\n OrderedSet.prototype.end = function () {\n return new OrderedSetIterator(this._header, this._header, this);\n };\n OrderedSet.prototype.rBegin = function () {\n return new OrderedSetIterator(this._header._right || this._header, this._header, this, 1 /* IteratorType.REVERSE */);\n };\n OrderedSet.prototype.rEnd = function () {\n return new OrderedSetIterator(this._header, this._header, this, 1 /* IteratorType.REVERSE */);\n };\n OrderedSet.prototype.front = function () {\n return this._header._left ? this._header._left._key : undefined;\n };\n OrderedSet.prototype.back = function () {\n return this._header._right ? this._header._right._key : undefined;\n };\n /**\n * @description Insert element to set.\n * @param key - The key want to insert.\n * @param hint - You can give an iterator hint to improve insertion efficiency.\n * @return The size of container after setting.\n * @example\n * const st = new OrderedSet([2, 4, 5]);\n * const iter = st.begin();\n * st.insert(1);\n * st.insert(3, iter); // give a hint will be faster.\n */\n OrderedSet.prototype.insert = function (key, hint) {\n return this._set(key, undefined, hint);\n };\n OrderedSet.prototype.find = function (element) {\n var resNode = this._findElementNode(this._root, element);\n return new OrderedSetIterator(resNode, this._header, this);\n };\n OrderedSet.prototype.lowerBound = function (key) {\n var resNode = this._lowerBound(this._root, key);\n return new OrderedSetIterator(resNode, this._header, this);\n };\n OrderedSet.prototype.upperBound = function (key) {\n var resNode = this._upperBound(this._root, key);\n return new OrderedSetIterator(resNode, this._header, this);\n };\n OrderedSet.prototype.reverseLowerBound = function (key) {\n var resNode = this._reverseLowerBound(this._root, key);\n return new OrderedSetIterator(resNode, this._header, this);\n };\n OrderedSet.prototype.reverseUpperBound = function (key) {\n var resNode = this._reverseUpperBound(this._root, key);\n return new OrderedSetIterator(resNode, this._header, this);\n };\n OrderedSet.prototype.union = function (other) {\n var self = this;\n other.forEach(function (el) {\n self.insert(el);\n });\n return this._length;\n };\n OrderedSet.prototype[Symbol.iterator] = function () {\n return this._iterationFunc(this._root);\n };\n return OrderedSet;\n}(TreeContainer));\nexport default OrderedSet;\n","import TreeContainer from './Base';\nimport TreeIterator from './Base/TreeIterator';\nimport { TreeNode } from './Base/TreeNode';\nimport { initContainer, IteratorType } from '@/container/ContainerBase';\nimport { throwIteratorAccessError } from '@/utils/throwError';\n\nclass OrderedSetIterator extends TreeIterator {\n container: OrderedSet;\n constructor(\n node: TreeNode,\n header: TreeNode,\n container: OrderedSet,\n iteratorType?: IteratorType\n ) {\n super(node, header, iteratorType);\n this.container = container;\n }\n get pointer() {\n if (this._node === this._header) {\n throwIteratorAccessError();\n }\n return this._node._key!;\n }\n copy() {\n return new OrderedSetIterator(\n this._node,\n this._header,\n this.container,\n this.iteratorType\n );\n }\n // @ts-ignore\n equals(iter: OrderedSetIterator): boolean;\n}\n\nexport type { OrderedSetIterator };\n\nclass OrderedSet extends TreeContainer {\n /**\n * @param container - The initialization container.\n * @param cmp - The compare function.\n * @param enableIndex - Whether to enable iterator indexing function.\n * @example\n * new OrderedSet();\n * new OrderedSet([0, 1, 2]);\n * new OrderedSet([0, 1, 2], (x, y) => x - y);\n * new OrderedSet([0, 1, 2], (x, y) => x - y, true);\n */\n constructor(\n container: initContainer = [],\n cmp?: (x: K, y: K) => number,\n enableIndex?: boolean\n ) {\n super(cmp, enableIndex);\n const self = this;\n container.forEach(function (el) {\n self.insert(el);\n });\n }\n /**\n * @internal\n */\n private * _iterationFunc(\n curNode: TreeNode | undefined\n ): Generator {\n if (curNode === undefined) return;\n yield * this._iterationFunc(curNode._left);\n yield curNode._key!;\n yield * this._iterationFunc(curNode._right);\n }\n begin() {\n return new OrderedSetIterator(\n this._header._left || this._header,\n this._header,\n this\n );\n }\n end() {\n return new OrderedSetIterator(this._header, this._header, this);\n }\n rBegin() {\n return new OrderedSetIterator(\n this._header._right || this._header,\n this._header,\n this,\n IteratorType.REVERSE\n );\n }\n rEnd() {\n return new OrderedSetIterator(this._header, this._header, this, IteratorType.REVERSE);\n }\n front() {\n return this._header._left ? this._header._left._key : undefined;\n }\n back() {\n return this._header._right ? this._header._right._key : undefined;\n }\n /**\n * @description Insert element to set.\n * @param key - The key want to insert.\n * @param hint - You can give an iterator hint to improve insertion efficiency.\n * @return The size of container after setting.\n * @example\n * const st = new OrderedSet([2, 4, 5]);\n * const iter = st.begin();\n * st.insert(1);\n * st.insert(3, iter); // give a hint will be faster.\n */\n insert(key: K, hint?: OrderedSetIterator) {\n return this._set(key, undefined, hint);\n }\n find(element: K) {\n const resNode = this._findElementNode(this._root, element);\n return new OrderedSetIterator(resNode, this._header, this);\n }\n lowerBound(key: K) {\n const resNode = this._lowerBound(this._root, key);\n return new OrderedSetIterator(resNode, this._header, this);\n }\n upperBound(key: K) {\n const resNode = this._upperBound(this._root, key);\n return new OrderedSetIterator(resNode, this._header, this);\n }\n reverseLowerBound(key: K) {\n const resNode = this._reverseLowerBound(this._root, key);\n return new OrderedSetIterator(resNode, this._header, this);\n }\n reverseUpperBound(key: K) {\n const resNode = this._reverseUpperBound(this._root, key);\n return new OrderedSetIterator(resNode, this._header, this);\n }\n union(other: OrderedSet) {\n const self = this;\n other.forEach(function (el) {\n self.insert(el);\n });\n return this._length;\n }\n [Symbol.iterator]() {\n return this._iterationFunc(this._root);\n }\n // @ts-ignore\n eraseElementByIterator(iter: OrderedSetIterator): OrderedSetIterator;\n // @ts-ignore\n forEach(callback: (element: K, index: number, tree: OrderedSet) => void): void;\n // @ts-ignore\n getElementByPos(pos: number): K;\n}\n\nexport default OrderedSet;\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","/* Protocol - protocol constants */\nconst protocol = module.exports\n\n/* Command code => mnemonic */\nprotocol.types = {\n 0: 'reserved',\n 1: 'connect',\n 2: 'connack',\n 3: 'publish',\n 4: 'puback',\n 5: 'pubrec',\n 6: 'pubrel',\n 7: 'pubcomp',\n 8: 'subscribe',\n 9: 'suback',\n 10: 'unsubscribe',\n 11: 'unsuback',\n 12: 'pingreq',\n 13: 'pingresp',\n 14: 'disconnect',\n 15: 'auth'\n}\n\n/* Mnemonic => Command code */\nprotocol.codes = {}\nfor (const k in protocol.types) {\n const v = protocol.types[k]\n protocol.codes[v] = k\n}\n\n/* Header */\nprotocol.CMD_SHIFT = 4\nprotocol.CMD_MASK = 0xF0\nprotocol.DUP_MASK = 0x08\nprotocol.QOS_MASK = 0x03\nprotocol.QOS_SHIFT = 1\nprotocol.RETAIN_MASK = 0x01\n\n/* Length */\nprotocol.VARBYTEINT_MASK = 0x7F\nprotocol.VARBYTEINT_FIN_MASK = 0x80\nprotocol.VARBYTEINT_MAX = 268435455\n\n/* Connack */\nprotocol.SESSIONPRESENT_MASK = 0x01\nprotocol.SESSIONPRESENT_HEADER = Buffer.from([protocol.SESSIONPRESENT_MASK])\nprotocol.CONNACK_HEADER = Buffer.from([protocol.codes.connack << protocol.CMD_SHIFT])\n\n/* Connect */\nprotocol.USERNAME_MASK = 0x80\nprotocol.PASSWORD_MASK = 0x40\nprotocol.WILL_RETAIN_MASK = 0x20\nprotocol.WILL_QOS_MASK = 0x18\nprotocol.WILL_QOS_SHIFT = 3\nprotocol.WILL_FLAG_MASK = 0x04\nprotocol.CLEAN_SESSION_MASK = 0x02\nprotocol.CONNECT_HEADER = Buffer.from([protocol.codes.connect << protocol.CMD_SHIFT])\n\n/* Properties */\nprotocol.properties = {\n sessionExpiryInterval: 17,\n willDelayInterval: 24,\n receiveMaximum: 33,\n maximumPacketSize: 39,\n topicAliasMaximum: 34,\n requestResponseInformation: 25,\n requestProblemInformation: 23,\n userProperties: 38,\n authenticationMethod: 21,\n authenticationData: 22,\n payloadFormatIndicator: 1,\n messageExpiryInterval: 2,\n contentType: 3,\n responseTopic: 8,\n correlationData: 9,\n maximumQoS: 36,\n retainAvailable: 37,\n assignedClientIdentifier: 18,\n reasonString: 31,\n wildcardSubscriptionAvailable: 40,\n subscriptionIdentifiersAvailable: 41,\n sharedSubscriptionAvailable: 42,\n serverKeepAlive: 19,\n responseInformation: 26,\n serverReference: 28,\n topicAlias: 35,\n subscriptionIdentifier: 11\n}\nprotocol.propertiesCodes = {}\nfor (const prop in protocol.properties) {\n const id = protocol.properties[prop]\n protocol.propertiesCodes[id] = prop\n}\nprotocol.propertiesTypes = {\n sessionExpiryInterval: 'int32',\n willDelayInterval: 'int32',\n receiveMaximum: 'int16',\n maximumPacketSize: 'int32',\n topicAliasMaximum: 'int16',\n requestResponseInformation: 'byte',\n requestProblemInformation: 'byte',\n userProperties: 'pair',\n authenticationMethod: 'string',\n authenticationData: 'binary',\n payloadFormatIndicator: 'byte',\n messageExpiryInterval: 'int32',\n contentType: 'string',\n responseTopic: 'string',\n correlationData: 'binary',\n maximumQoS: 'int8',\n retainAvailable: 'byte',\n assignedClientIdentifier: 'string',\n reasonString: 'string',\n wildcardSubscriptionAvailable: 'byte',\n subscriptionIdentifiersAvailable: 'byte',\n sharedSubscriptionAvailable: 'byte',\n serverKeepAlive: 'int16',\n responseInformation: 'string',\n serverReference: 'string',\n topicAlias: 'int16',\n subscriptionIdentifier: 'var'\n}\n\nfunction genHeader (type) {\n return [0, 1, 2].map(qos => {\n return [0, 1].map(dup => {\n return [0, 1].map(retain => {\n const buf = Buffer.alloc(1)\n buf.writeUInt8(\n protocol.codes[type] << protocol.CMD_SHIFT |\n (dup ? protocol.DUP_MASK : 0) |\n qos << protocol.QOS_SHIFT | retain, 0, true)\n return buf\n })\n })\n })\n}\n\n/* Publish */\nprotocol.PUBLISH_HEADER = genHeader('publish')\n\n/* Subscribe */\nprotocol.SUBSCRIBE_HEADER = genHeader('subscribe')\nprotocol.SUBSCRIBE_OPTIONS_QOS_MASK = 0x03\nprotocol.SUBSCRIBE_OPTIONS_NL_MASK = 0x01\nprotocol.SUBSCRIBE_OPTIONS_NL_SHIFT = 2\nprotocol.SUBSCRIBE_OPTIONS_RAP_MASK = 0x01\nprotocol.SUBSCRIBE_OPTIONS_RAP_SHIFT = 3\nprotocol.SUBSCRIBE_OPTIONS_RH_MASK = 0x03\nprotocol.SUBSCRIBE_OPTIONS_RH_SHIFT = 4\nprotocol.SUBSCRIBE_OPTIONS_RH = [0x00, 0x10, 0x20]\nprotocol.SUBSCRIBE_OPTIONS_NL = 0x04\nprotocol.SUBSCRIBE_OPTIONS_RAP = 0x08\nprotocol.SUBSCRIBE_OPTIONS_QOS = [0x00, 0x01, 0x02]\n\n/* Unsubscribe */\nprotocol.UNSUBSCRIBE_HEADER = genHeader('unsubscribe')\n\n/* Confirmations */\nprotocol.ACKS = {\n unsuback: genHeader('unsuback'),\n puback: genHeader('puback'),\n pubcomp: genHeader('pubcomp'),\n pubrel: genHeader('pubrel'),\n pubrec: genHeader('pubrec')\n}\n\nprotocol.SUBACK_HEADER = Buffer.from([protocol.codes.suback << protocol.CMD_SHIFT])\n\n/* Protocol versions */\nprotocol.VERSION3 = Buffer.from([3])\nprotocol.VERSION4 = Buffer.from([4])\nprotocol.VERSION5 = Buffer.from([5])\nprotocol.VERSION131 = Buffer.from([131])\nprotocol.VERSION132 = Buffer.from([132])\n\n/* QoS */\nprotocol.QOS = [0, 1, 2].map(qos => {\n return Buffer.from([qos])\n})\n\n/* Empty packets */\nprotocol.EMPTY = {\n pingreq: Buffer.from([protocol.codes.pingreq << 4, 0]),\n pingresp: Buffer.from([protocol.codes.pingresp << 4, 0]),\n disconnect: Buffer.from([protocol.codes.disconnect << 4, 0])\n}\n","const writeToStream = require('./writeToStream')\nconst EventEmitter = require('events')\n\nfunction generate (packet, opts) {\n const stream = new Accumulator()\n writeToStream(packet, stream, opts)\n return stream.concat()\n}\n\nclass Accumulator extends EventEmitter {\n constructor () {\n super()\n this._array = new Array(20)\n this._i = 0\n }\n\n write (chunk) {\n this._array[this._i++] = chunk\n return true\n }\n\n concat () {\n let length = 0\n const lengths = new Array(this._array.length)\n const list = this._array\n let pos = 0\n let i\n\n for (i = 0; i < list.length && list[i] !== undefined; i++) {\n if (typeof list[i] !== 'string') lengths[i] = list[i].length\n else lengths[i] = Buffer.byteLength(list[i])\n\n length += lengths[i]\n }\n\n const result = Buffer.allocUnsafe(length)\n\n for (i = 0; i < list.length && list[i] !== undefined; i++) {\n if (typeof list[i] !== 'string') {\n list[i].copy(result, pos)\n pos += lengths[i]\n } else {\n result.write(list[i], pos)\n pos += lengths[i]\n }\n }\n\n return result\n }\n}\n\nmodule.exports = generate\n","exports.parser = require('./parser').parser\nexports.generate = require('./generate')\nexports.writeToStream = require('./writeToStream')\n","const max = 65536\nconst cache = {}\n\n// in node 6 Buffer.subarray returns a Uint8Array instead of a Buffer\n// later versions return a Buffer\n// alternative is Buffer.slice but that creates a new buffer\n// creating new buffers takes time\n// SubOk is only false on node < 8\nconst SubOk = Buffer.isBuffer(Buffer.from([1, 2]).subarray(0, 1))\n\nfunction generateBuffer (i) {\n const buffer = Buffer.allocUnsafe(2)\n buffer.writeUInt8(i >> 8, 0)\n buffer.writeUInt8(i & 0x00FF, 0 + 1)\n\n return buffer\n}\n\nfunction generateCache () {\n for (let i = 0; i < max; i++) {\n cache[i] = generateBuffer(i)\n }\n}\n\nfunction genBufVariableByteInt (num) {\n const maxLength = 4 // max 4 bytes\n let digit = 0\n let pos = 0\n const buffer = Buffer.allocUnsafe(maxLength)\n\n do {\n digit = num % 128 | 0\n num = num / 128 | 0\n if (num > 0) digit = digit | 0x80\n\n buffer.writeUInt8(digit, pos++)\n } while (num > 0 && pos < maxLength)\n\n if (num > 0) {\n pos = 0\n }\n\n return SubOk ? buffer.subarray(0, pos) : buffer.slice(0, pos)\n}\n\nfunction generate4ByteBuffer (num) {\n const buffer = Buffer.allocUnsafe(4)\n buffer.writeUInt32BE(num, 0)\n return buffer\n}\n\nmodule.exports = {\n cache,\n generateCache,\n generateNumber: generateBuffer,\n genBufVariableByteInt,\n generate4ByteBuffer\n}\n","class Packet {\n constructor () {\n this.cmd = null\n this.retain = false\n this.qos = 0\n this.dup = false\n this.length = -1\n this.topic = null\n this.payload = null\n }\n}\n\nmodule.exports = Packet\n","const bl = require('bl')\nconst EventEmitter = require('events')\nconst Packet = require('./packet')\nconst constants = require('./constants')\nconst debug = require('debug')('mqtt-packet:parser')\n\nclass Parser extends EventEmitter {\n constructor () {\n super()\n this.parser = this.constructor.parser\n }\n\n static parser (opt) {\n if (!(this instanceof Parser)) return (new Parser()).parser(opt)\n\n this.settings = opt || {}\n\n this._states = [\n '_parseHeader',\n '_parseLength',\n '_parsePayload',\n '_newPacket'\n ]\n\n this._resetState()\n return this\n }\n\n _resetState () {\n debug('_resetState: resetting packet, error, _list, and _stateCounter')\n this.packet = new Packet()\n this.error = null\n this._list = bl()\n this._stateCounter = 0\n }\n\n parse (buf) {\n if (this.error) this._resetState()\n\n this._list.append(buf)\n debug('parse: current state: %s', this._states[this._stateCounter])\n while ((this.packet.length !== -1 || this._list.length > 0) &&\n this[this._states[this._stateCounter]]() &&\n !this.error) {\n this._stateCounter++\n debug('parse: state complete. _stateCounter is now: %d', this._stateCounter)\n debug('parse: packet.length: %d, buffer list length: %d', this.packet.length, this._list.length)\n if (this._stateCounter >= this._states.length) this._stateCounter = 0\n }\n debug('parse: exited while loop. packet: %d, buffer list length: %d', this.packet.length, this._list.length)\n return this._list.length\n }\n\n _parseHeader () {\n // There is at least one byte in the buffer\n const zero = this._list.readUInt8(0)\n this.packet.cmd = constants.types[zero >> constants.CMD_SHIFT]\n this.packet.retain = (zero & constants.RETAIN_MASK) !== 0\n this.packet.qos = (zero >> constants.QOS_SHIFT) & constants.QOS_MASK\n this.packet.dup = (zero & constants.DUP_MASK) !== 0\n debug('_parseHeader: packet: %o', this.packet)\n\n this._list.consume(1)\n\n return true\n }\n\n _parseLength () {\n // There is at least one byte in the list\n const result = this._parseVarByteNum(true)\n\n if (result) {\n this.packet.length = result.value\n this._list.consume(result.bytes)\n }\n debug('_parseLength %d', result.value)\n return !!result\n }\n\n _parsePayload () {\n debug('_parsePayload: payload %O', this._list)\n let result = false\n\n // Do we have a payload? Do we have enough data to complete the payload?\n // PINGs have no payload\n if (this.packet.length === 0 || this._list.length >= this.packet.length) {\n this._pos = 0\n\n switch (this.packet.cmd) {\n case 'connect':\n this._parseConnect()\n break\n case 'connack':\n this._parseConnack()\n break\n case 'publish':\n this._parsePublish()\n break\n case 'puback':\n case 'pubrec':\n case 'pubrel':\n case 'pubcomp':\n this._parseConfirmation()\n break\n case 'subscribe':\n this._parseSubscribe()\n break\n case 'suback':\n this._parseSuback()\n break\n case 'unsubscribe':\n this._parseUnsubscribe()\n break\n case 'unsuback':\n this._parseUnsuback()\n break\n case 'pingreq':\n case 'pingresp':\n // These are empty, nothing to do\n break\n case 'disconnect':\n this._parseDisconnect()\n break\n case 'auth':\n this._parseAuth()\n break\n default:\n this._emitError(new Error('Not supported'))\n }\n\n result = true\n }\n debug('_parsePayload complete result: %s', result)\n return result\n }\n\n _parseConnect () {\n debug('_parseConnect')\n let topic // Will topic\n let payload // Will payload\n let password // Password\n let username // Username\n const flags = {}\n const packet = this.packet\n\n // Parse protocolId\n const protocolId = this._parseString()\n\n if (protocolId === null) return this._emitError(new Error('Cannot parse protocolId'))\n if (protocolId !== 'MQTT' && protocolId !== 'MQIsdp') {\n return this._emitError(new Error('Invalid protocolId'))\n }\n\n packet.protocolId = protocolId\n\n // Parse constants version number\n if (this._pos >= this._list.length) return this._emitError(new Error('Packet too short'))\n\n packet.protocolVersion = this._list.readUInt8(this._pos)\n\n if (packet.protocolVersion >= 128) {\n packet.bridgeMode = true\n packet.protocolVersion = packet.protocolVersion - 128\n }\n\n if (packet.protocolVersion !== 3 && packet.protocolVersion !== 4 && packet.protocolVersion !== 5) {\n return this._emitError(new Error('Invalid protocol version'))\n }\n\n this._pos++\n\n if (this._pos >= this._list.length) {\n return this._emitError(new Error('Packet too short'))\n }\n\n // Parse connect flags\n flags.username = (this._list.readUInt8(this._pos) & constants.USERNAME_MASK)\n flags.password = (this._list.readUInt8(this._pos) & constants.PASSWORD_MASK)\n flags.will = (this._list.readUInt8(this._pos) & constants.WILL_FLAG_MASK)\n\n if (flags.will) {\n packet.will = {}\n packet.will.retain = (this._list.readUInt8(this._pos) & constants.WILL_RETAIN_MASK) !== 0\n packet.will.qos = (this._list.readUInt8(this._pos) &\n constants.WILL_QOS_MASK) >> constants.WILL_QOS_SHIFT\n }\n\n packet.clean = (this._list.readUInt8(this._pos) & constants.CLEAN_SESSION_MASK) !== 0\n this._pos++\n\n // Parse keepalive\n packet.keepalive = this._parseNum()\n if (packet.keepalive === -1) return this._emitError(new Error('Packet too short'))\n\n // parse properties\n if (packet.protocolVersion === 5) {\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n }\n // Parse clientId\n const clientId = this._parseString()\n if (clientId === null) return this._emitError(new Error('Packet too short'))\n packet.clientId = clientId\n debug('_parseConnect: packet.clientId: %s', packet.clientId)\n\n if (flags.will) {\n if (packet.protocolVersion === 5) {\n const willProperties = this._parseProperties()\n if (Object.getOwnPropertyNames(willProperties).length) {\n packet.will.properties = willProperties\n }\n }\n // Parse will topic\n topic = this._parseString()\n if (topic === null) return this._emitError(new Error('Cannot parse will topic'))\n packet.will.topic = topic\n debug('_parseConnect: packet.will.topic: %s', packet.will.topic)\n\n // Parse will payload\n payload = this._parseBuffer()\n if (payload === null) return this._emitError(new Error('Cannot parse will payload'))\n packet.will.payload = payload\n debug('_parseConnect: packet.will.paylaod: %s', packet.will.payload)\n }\n\n // Parse username\n if (flags.username) {\n username = this._parseString()\n if (username === null) return this._emitError(new Error('Cannot parse username'))\n packet.username = username\n debug('_parseConnect: packet.username: %s', packet.username)\n }\n\n // Parse password\n if (flags.password) {\n password = this._parseBuffer()\n if (password === null) return this._emitError(new Error('Cannot parse password'))\n packet.password = password\n }\n // need for right parse auth packet and self set up\n this.settings = packet\n debug('_parseConnect: complete')\n return packet\n }\n\n _parseConnack () {\n debug('_parseConnack')\n const packet = this.packet\n\n if (this._list.length < 1) return null\n packet.sessionPresent = !!(this._list.readUInt8(this._pos++) & constants.SESSIONPRESENT_MASK)\n\n if (this.settings.protocolVersion === 5) {\n if (this._list.length >= 2) {\n packet.reasonCode = this._list.readUInt8(this._pos++)\n } else {\n packet.reasonCode = 0\n }\n } else {\n if (this._list.length < 2) return null\n packet.returnCode = this._list.readUInt8(this._pos++)\n }\n\n if (packet.returnCode === -1 || packet.reasonCode === -1) return this._emitError(new Error('Cannot parse return code'))\n // mqtt 5 properties\n if (this.settings.protocolVersion === 5) {\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n }\n debug('_parseConnack: complete')\n }\n\n _parsePublish () {\n debug('_parsePublish')\n const packet = this.packet\n packet.topic = this._parseString()\n\n if (packet.topic === null) return this._emitError(new Error('Cannot parse topic'))\n\n // Parse messageId\n if (packet.qos > 0) if (!this._parseMessageId()) { return }\n\n // Properties mqtt 5\n if (this.settings.protocolVersion === 5) {\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n }\n\n packet.payload = this._list.slice(this._pos, packet.length)\n debug('_parsePublish: payload from buffer list: %o', packet.payload)\n }\n\n _parseSubscribe () {\n debug('_parseSubscribe')\n const packet = this.packet\n let topic\n let options\n let qos\n let rh\n let rap\n let nl\n let subscription\n\n if (packet.qos !== 1) {\n return this._emitError(new Error('Wrong subscribe header'))\n }\n\n packet.subscriptions = []\n\n if (!this._parseMessageId()) { return }\n\n // Properties mqtt 5\n if (this.settings.protocolVersion === 5) {\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n }\n\n while (this._pos < packet.length) {\n // Parse topic\n topic = this._parseString()\n if (topic === null) return this._emitError(new Error('Cannot parse topic'))\n if (this._pos >= packet.length) return this._emitError(new Error('Malformed Subscribe Payload'))\n\n options = this._parseByte()\n qos = options & constants.SUBSCRIBE_OPTIONS_QOS_MASK\n nl = ((options >> constants.SUBSCRIBE_OPTIONS_NL_SHIFT) & constants.SUBSCRIBE_OPTIONS_NL_MASK) !== 0\n rap = ((options >> constants.SUBSCRIBE_OPTIONS_RAP_SHIFT) & constants.SUBSCRIBE_OPTIONS_RAP_MASK) !== 0\n rh = (options >> constants.SUBSCRIBE_OPTIONS_RH_SHIFT) & constants.SUBSCRIBE_OPTIONS_RH_MASK\n\n subscription = { topic, qos }\n\n // mqtt 5 options\n if (this.settings.protocolVersion === 5) {\n subscription.nl = nl\n subscription.rap = rap\n subscription.rh = rh\n } else if (this.settings.bridgeMode) {\n subscription.rh = 0\n subscription.rap = true\n subscription.nl = true\n }\n\n // Push pair to subscriptions\n debug('_parseSubscribe: push subscription `%s` to subscription', subscription)\n packet.subscriptions.push(subscription)\n }\n }\n\n _parseSuback () {\n debug('_parseSuback')\n const packet = this.packet\n this.packet.granted = []\n\n if (!this._parseMessageId()) { return }\n\n // Properties mqtt 5\n if (this.settings.protocolVersion === 5) {\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n }\n\n // Parse granted QoSes\n while (this._pos < this.packet.length) {\n this.packet.granted.push(this._list.readUInt8(this._pos++))\n }\n }\n\n _parseUnsubscribe () {\n debug('_parseUnsubscribe')\n const packet = this.packet\n\n packet.unsubscriptions = []\n\n // Parse messageId\n if (!this._parseMessageId()) { return }\n\n // Properties mqtt 5\n if (this.settings.protocolVersion === 5) {\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n }\n\n while (this._pos < packet.length) {\n // Parse topic\n const topic = this._parseString()\n if (topic === null) return this._emitError(new Error('Cannot parse topic'))\n\n // Push topic to unsubscriptions\n debug('_parseUnsubscribe: push topic `%s` to unsubscriptions', topic)\n packet.unsubscriptions.push(topic)\n }\n }\n\n _parseUnsuback () {\n debug('_parseUnsuback')\n const packet = this.packet\n if (!this._parseMessageId()) return this._emitError(new Error('Cannot parse messageId'))\n // Properties mqtt 5\n if (this.settings.protocolVersion === 5) {\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n // Parse granted QoSes\n packet.granted = []\n while (this._pos < this.packet.length) {\n this.packet.granted.push(this._list.readUInt8(this._pos++))\n }\n }\n }\n\n // parse packets like puback, pubrec, pubrel, pubcomp\n _parseConfirmation () {\n debug('_parseConfirmation: packet.cmd: `%s`', this.packet.cmd)\n const packet = this.packet\n\n this._parseMessageId()\n\n if (this.settings.protocolVersion === 5) {\n if (packet.length > 2) {\n // response code\n packet.reasonCode = this._parseByte()\n debug('_parseConfirmation: packet.reasonCode `%d`', packet.reasonCode)\n } else {\n packet.reasonCode = 0\n }\n\n if (packet.length > 3) {\n // properies mqtt 5\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n }\n }\n\n return true\n }\n\n // parse disconnect packet\n _parseDisconnect () {\n const packet = this.packet\n debug('_parseDisconnect')\n\n if (this.settings.protocolVersion === 5) {\n // response code\n if (this._list.length > 0) {\n packet.reasonCode = this._parseByte()\n } else {\n packet.reasonCode = 0\n }\n // properies mqtt 5\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n }\n\n debug('_parseDisconnect result: true')\n return true\n }\n\n // parse auth packet\n _parseAuth () {\n debug('_parseAuth')\n const packet = this.packet\n\n if (this.settings.protocolVersion !== 5) {\n return this._emitError(new Error('Not supported auth packet for this version MQTT'))\n }\n\n // response code\n packet.reasonCode = this._parseByte()\n // properies mqtt 5\n const properties = this._parseProperties()\n if (Object.getOwnPropertyNames(properties).length) {\n packet.properties = properties\n }\n\n debug('_parseAuth: result: true')\n return true\n }\n\n _parseMessageId () {\n const packet = this.packet\n\n packet.messageId = this._parseNum()\n\n if (packet.messageId === null) {\n this._emitError(new Error('Cannot parse messageId'))\n return false\n }\n\n debug('_parseMessageId: packet.messageId %d', packet.messageId)\n return true\n }\n\n _parseString (maybeBuffer) {\n const length = this._parseNum()\n const end = length + this._pos\n\n if (length === -1 || end > this._list.length || end > this.packet.length) return null\n\n const result = this._list.toString('utf8', this._pos, end)\n this._pos += length\n debug('_parseString: result: %s', result)\n return result\n }\n\n _parseStringPair () {\n debug('_parseStringPair')\n return {\n name: this._parseString(),\n value: this._parseString()\n }\n }\n\n _parseBuffer () {\n const length = this._parseNum()\n const end = length + this._pos\n\n if (length === -1 || end > this._list.length || end > this.packet.length) return null\n\n const result = this._list.slice(this._pos, end)\n\n this._pos += length\n debug('_parseBuffer: result: %o', result)\n return result\n }\n\n _parseNum () {\n if (this._list.length - this._pos < 2) return -1\n\n const result = this._list.readUInt16BE(this._pos)\n this._pos += 2\n debug('_parseNum: result: %s', result)\n return result\n }\n\n _parse4ByteNum () {\n if (this._list.length - this._pos < 4) return -1\n\n const result = this._list.readUInt32BE(this._pos)\n this._pos += 4\n debug('_parse4ByteNum: result: %s', result)\n return result\n }\n\n _parseVarByteNum (fullInfoFlag) {\n debug('_parseVarByteNum')\n const maxBytes = 4\n let bytes = 0\n let mul = 1\n let value = 0\n let result = false\n let current\n const padding = this._pos ? this._pos : 0\n\n while (bytes < maxBytes && (padding + bytes) < this._list.length) {\n current = this._list.readUInt8(padding + bytes++)\n value += mul * (current & constants.VARBYTEINT_MASK)\n mul *= 0x80\n\n if ((current & constants.VARBYTEINT_FIN_MASK) === 0) {\n result = true\n break\n }\n if (this._list.length <= bytes) {\n break\n }\n }\n\n if (!result && bytes === maxBytes && this._list.length >= bytes) {\n this._emitError(new Error('Invalid variable byte integer'))\n }\n\n if (padding) {\n this._pos += bytes\n }\n\n result = result\n ? fullInfoFlag ? {\n bytes,\n value\n } : value\n : false\n\n debug('_parseVarByteNum: result: %o', result)\n return result\n }\n\n _parseByte () {\n let result\n if (this._pos < this._list.length) {\n result = this._list.readUInt8(this._pos)\n this._pos++\n }\n debug('_parseByte: result: %o', result)\n return result\n }\n\n _parseByType (type) {\n debug('_parseByType: type: %s', type)\n switch (type) {\n case 'byte': {\n return this._parseByte() !== 0\n }\n case 'int8': {\n return this._parseByte()\n }\n case 'int16': {\n return this._parseNum()\n }\n case 'int32': {\n return this._parse4ByteNum()\n }\n case 'var': {\n return this._parseVarByteNum()\n }\n case 'string': {\n return this._parseString()\n }\n case 'pair': {\n return this._parseStringPair()\n }\n case 'binary': {\n return this._parseBuffer()\n }\n }\n }\n\n _parseProperties () {\n debug('_parseProperties')\n const length = this._parseVarByteNum()\n const start = this._pos\n const end = start + length\n const result = {}\n while (this._pos < end) {\n const type = this._parseByte()\n if (!type) {\n this._emitError(new Error('Cannot parse property code type'))\n return false\n }\n const name = constants.propertiesCodes[type]\n if (!name) {\n this._emitError(new Error('Unknown property'))\n return false\n }\n // user properties process\n if (name === 'userProperties') {\n if (!result[name]) {\n result[name] = Object.create(null)\n }\n const currentUserProperty = this._parseByType(constants.propertiesTypes[name])\n if (result[name][currentUserProperty.name]) {\n if (Array.isArray(result[name][currentUserProperty.name])) {\n result[name][currentUserProperty.name].push(currentUserProperty.value)\n } else {\n const currentValue = result[name][currentUserProperty.name]\n result[name][currentUserProperty.name] = [currentValue]\n result[name][currentUserProperty.name].push(currentUserProperty.value)\n }\n } else {\n result[name][currentUserProperty.name] = currentUserProperty.value\n }\n continue\n }\n if (result[name]) {\n if (Array.isArray(result[name])) {\n result[name].push(this._parseByType(constants.propertiesTypes[name]))\n } else {\n result[name] = [result[name]]\n result[name].push(this._parseByType(constants.propertiesTypes[name]))\n }\n } else {\n result[name] = this._parseByType(constants.propertiesTypes[name])\n }\n }\n return result\n }\n\n _newPacket () {\n debug('_newPacket')\n if (this.packet) {\n this._list.consume(this.packet.length)\n debug('_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d', this.packet.cmd, this.packet.payload, this.packet.length)\n this.emit('packet', this.packet)\n }\n debug('_newPacket: new packet')\n this.packet = new Packet()\n\n this._pos = 0\n\n return true\n }\n\n _emitError (err) {\n debug('_emitError')\n this.error = err\n this.emit('error', err)\n }\n}\n\nmodule.exports = Parser\n","const protocol = require('./constants')\nconst empty = Buffer.allocUnsafe(0)\nconst zeroBuf = Buffer.from([0])\nconst numbers = require('./numbers')\nconst nextTick = require('process-nextick-args').nextTick\nconst debug = require('debug')('mqtt-packet:writeToStream')\n\nconst numCache = numbers.cache\nconst generateNumber = numbers.generateNumber\nconst generateCache = numbers.generateCache\nconst genBufVariableByteInt = numbers.genBufVariableByteInt\nconst generate4ByteBuffer = numbers.generate4ByteBuffer\nlet writeNumber = writeNumberCached\nlet toGenerate = true\n\nfunction generate (packet, stream, opts) {\n debug('generate called')\n if (stream.cork) {\n stream.cork()\n nextTick(uncork, stream)\n }\n\n if (toGenerate) {\n toGenerate = false\n generateCache()\n }\n debug('generate: packet.cmd: %s', packet.cmd)\n switch (packet.cmd) {\n case 'connect':\n return connect(packet, stream, opts)\n case 'connack':\n return connack(packet, stream, opts)\n case 'publish':\n return publish(packet, stream, opts)\n case 'puback':\n case 'pubrec':\n case 'pubrel':\n case 'pubcomp':\n return confirmation(packet, stream, opts)\n case 'subscribe':\n return subscribe(packet, stream, opts)\n case 'suback':\n return suback(packet, stream, opts)\n case 'unsubscribe':\n return unsubscribe(packet, stream, opts)\n case 'unsuback':\n return unsuback(packet, stream, opts)\n case 'pingreq':\n case 'pingresp':\n return emptyPacket(packet, stream, opts)\n case 'disconnect':\n return disconnect(packet, stream, opts)\n case 'auth':\n return auth(packet, stream, opts)\n default:\n stream.emit('error', new Error('Unknown command'))\n return false\n }\n}\n/**\n * Controls numbers cache.\n * Set to \"false\" to allocate buffers on-the-flight instead of pre-generated cache\n */\nObject.defineProperty(generate, 'cacheNumbers', {\n get () {\n return writeNumber === writeNumberCached\n },\n set (value) {\n if (value) {\n if (!numCache || Object.keys(numCache).length === 0) toGenerate = true\n writeNumber = writeNumberCached\n } else {\n toGenerate = false\n writeNumber = writeNumberGenerated\n }\n }\n})\n\nfunction uncork (stream) {\n stream.uncork()\n}\n\nfunction connect (packet, stream, opts) {\n const settings = packet || {}\n const protocolId = settings.protocolId || 'MQTT'\n let protocolVersion = settings.protocolVersion || 4\n const will = settings.will\n let clean = settings.clean\n const keepalive = settings.keepalive || 0\n const clientId = settings.clientId || ''\n const username = settings.username\n const password = settings.password\n /* mqtt5 new oprions */\n const properties = settings.properties\n\n if (clean === undefined) clean = true\n\n let length = 0\n\n // Must be a string and non-falsy\n if (!protocolId ||\n (typeof protocolId !== 'string' && !Buffer.isBuffer(protocolId))) {\n stream.emit('error', new Error('Invalid protocolId'))\n return false\n } else length += protocolId.length + 2\n\n // Must be 3 or 4 or 5\n if (protocolVersion !== 3 && protocolVersion !== 4 && protocolVersion !== 5) {\n stream.emit('error', new Error('Invalid protocol version'))\n return false\n } else length += 1\n\n // ClientId might be omitted in 3.1.1 and 5, but only if cleanSession is set to 1\n if ((typeof clientId === 'string' || Buffer.isBuffer(clientId)) &&\n (clientId || protocolVersion >= 4) && (clientId || clean)) {\n length += Buffer.byteLength(clientId) + 2\n } else {\n if (protocolVersion < 4) {\n stream.emit('error', new Error('clientId must be supplied before 3.1.1'))\n return false\n }\n if ((clean * 1) === 0) {\n stream.emit('error', new Error('clientId must be given if cleanSession set to 0'))\n return false\n }\n }\n\n // Must be a two byte number\n if (typeof keepalive !== 'number' ||\n keepalive < 0 ||\n keepalive > 65535 ||\n keepalive % 1 !== 0) {\n stream.emit('error', new Error('Invalid keepalive'))\n return false\n } else length += 2\n\n // Connect flags\n length += 1\n\n // Properties\n if (protocolVersion === 5) {\n var propertiesData = getProperties(stream, properties)\n if (!propertiesData) { return false }\n length += propertiesData.length\n }\n\n // If will exists...\n if (will) {\n // It must be an object\n if (typeof will !== 'object') {\n stream.emit('error', new Error('Invalid will'))\n return false\n }\n // It must have topic typeof string\n if (!will.topic || typeof will.topic !== 'string') {\n stream.emit('error', new Error('Invalid will topic'))\n return false\n } else {\n length += Buffer.byteLength(will.topic) + 2\n }\n\n // Payload\n length += 2 // payload length\n if (will.payload) {\n if (will.payload.length >= 0) {\n if (typeof will.payload === 'string') {\n length += Buffer.byteLength(will.payload)\n } else {\n length += will.payload.length\n }\n } else {\n stream.emit('error', new Error('Invalid will payload'))\n return false\n }\n }\n // will properties\n var willProperties = {}\n if (protocolVersion === 5) {\n willProperties = getProperties(stream, will.properties)\n if (!willProperties) { return false }\n length += willProperties.length\n }\n }\n\n // Username\n let providedUsername = false\n if (username != null) {\n if (isStringOrBuffer(username)) {\n providedUsername = true\n length += Buffer.byteLength(username) + 2\n } else {\n stream.emit('error', new Error('Invalid username'))\n return false\n }\n }\n\n // Password\n if (password != null) {\n if (!providedUsername) {\n stream.emit('error', new Error('Username is required to use password'))\n return false\n }\n\n if (isStringOrBuffer(password)) {\n length += byteLength(password) + 2\n } else {\n stream.emit('error', new Error('Invalid password'))\n return false\n }\n }\n\n // Generate header\n stream.write(protocol.CONNECT_HEADER)\n\n // Generate length\n writeVarByteInt(stream, length)\n\n // Generate protocol ID\n writeStringOrBuffer(stream, protocolId)\n\n if (settings.bridgeMode) {\n protocolVersion += 128\n }\n\n stream.write(\n protocolVersion === 131\n ? protocol.VERSION131\n : protocolVersion === 132\n ? protocol.VERSION132\n : protocolVersion === 4\n ? protocol.VERSION4\n : protocolVersion === 5\n ? protocol.VERSION5\n : protocol.VERSION3\n )\n\n // Connect flags\n let flags = 0\n flags |= (username != null) ? protocol.USERNAME_MASK : 0\n flags |= (password != null) ? protocol.PASSWORD_MASK : 0\n flags |= (will && will.retain) ? protocol.WILL_RETAIN_MASK : 0\n flags |= (will && will.qos) ? will.qos << protocol.WILL_QOS_SHIFT : 0\n flags |= will ? protocol.WILL_FLAG_MASK : 0\n flags |= clean ? protocol.CLEAN_SESSION_MASK : 0\n\n stream.write(Buffer.from([flags]))\n\n // Keepalive\n writeNumber(stream, keepalive)\n\n // Properties\n if (protocolVersion === 5) {\n propertiesData.write()\n }\n\n // Client ID\n writeStringOrBuffer(stream, clientId)\n\n // Will\n if (will) {\n if (protocolVersion === 5) {\n willProperties.write()\n }\n writeString(stream, will.topic)\n writeStringOrBuffer(stream, will.payload)\n }\n\n // Username and password\n if (username != null) {\n writeStringOrBuffer(stream, username)\n }\n if (password != null) {\n writeStringOrBuffer(stream, password)\n }\n // This is a small packet that happens only once on a stream\n // We assume the stream is always free to receive more data after this\n return true\n}\n\nfunction connack (packet, stream, opts) {\n const version = opts ? opts.protocolVersion : 4\n const settings = packet || {}\n const rc = version === 5 ? settings.reasonCode : settings.returnCode\n const properties = settings.properties\n let length = 2 // length of rc and sessionHeader\n\n // Check return code\n if (typeof rc !== 'number') {\n stream.emit('error', new Error('Invalid return code'))\n return false\n }\n // mqtt5 properties\n let propertiesData = null\n if (version === 5) {\n propertiesData = getProperties(stream, properties)\n if (!propertiesData) { return false }\n length += propertiesData.length\n }\n\n stream.write(protocol.CONNACK_HEADER)\n // length\n writeVarByteInt(stream, length)\n stream.write(settings.sessionPresent ? protocol.SESSIONPRESENT_HEADER : zeroBuf)\n\n stream.write(Buffer.from([rc]))\n if (propertiesData != null) {\n propertiesData.write()\n }\n return true\n}\n\nfunction publish (packet, stream, opts) {\n debug('publish: packet: %o', packet)\n const version = opts ? opts.protocolVersion : 4\n const settings = packet || {}\n const qos = settings.qos || 0\n const retain = settings.retain ? protocol.RETAIN_MASK : 0\n const topic = settings.topic\n const payload = settings.payload || empty\n const id = settings.messageId\n const properties = settings.properties\n\n let length = 0\n\n // Topic must be a non-empty string or Buffer\n if (typeof topic === 'string') length += Buffer.byteLength(topic) + 2\n else if (Buffer.isBuffer(topic)) length += topic.length + 2\n else {\n stream.emit('error', new Error('Invalid topic'))\n return false\n }\n\n // Get the payload length\n if (!Buffer.isBuffer(payload)) length += Buffer.byteLength(payload)\n else length += payload.length\n\n // Message ID must a number if qos > 0\n if (qos && typeof id !== 'number') {\n stream.emit('error', new Error('Invalid messageId'))\n return false\n } else if (qos) length += 2\n\n // mqtt5 properties\n let propertiesData = null\n if (version === 5) {\n propertiesData = getProperties(stream, properties)\n if (!propertiesData) { return false }\n length += propertiesData.length\n }\n\n // Header\n stream.write(protocol.PUBLISH_HEADER[qos][settings.dup ? 1 : 0][retain ? 1 : 0])\n\n // Remaining length\n writeVarByteInt(stream, length)\n\n // Topic\n writeNumber(stream, byteLength(topic))\n stream.write(topic)\n\n // Message ID\n if (qos > 0) writeNumber(stream, id)\n\n // Properties\n if (propertiesData != null) {\n propertiesData.write()\n }\n\n // Payload\n debug('publish: payload: %o', payload)\n return stream.write(payload)\n}\n\n/* Puback, pubrec, pubrel and pubcomp */\nfunction confirmation (packet, stream, opts) {\n const version = opts ? opts.protocolVersion : 4\n const settings = packet || {}\n const type = settings.cmd || 'puback'\n const id = settings.messageId\n const dup = (settings.dup && type === 'pubrel') ? protocol.DUP_MASK : 0\n let qos = 0\n const reasonCode = settings.reasonCode\n const properties = settings.properties\n let length = version === 5 ? 3 : 2\n\n if (type === 'pubrel') qos = 1\n\n // Check message ID\n if (typeof id !== 'number') {\n stream.emit('error', new Error('Invalid messageId'))\n return false\n }\n\n // properies mqtt 5\n let propertiesData = null\n if (version === 5) {\n // Confirm should not add empty property length with no properties (rfc 3.4.2.2.1)\n if (typeof properties === 'object') {\n propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length)\n if (!propertiesData) { return false }\n length += propertiesData.length\n }\n }\n\n // Header\n stream.write(protocol.ACKS[type][qos][dup][0])\n\n // Length\n writeVarByteInt(stream, length)\n\n // Message ID\n writeNumber(stream, id)\n\n // reason code in header\n if (version === 5) {\n stream.write(Buffer.from([reasonCode]))\n }\n\n // properies mqtt 5\n if (propertiesData !== null) {\n propertiesData.write()\n }\n return true\n}\n\nfunction subscribe (packet, stream, opts) {\n debug('subscribe: packet: ')\n const version = opts ? opts.protocolVersion : 4\n const settings = packet || {}\n const dup = settings.dup ? protocol.DUP_MASK : 0\n const id = settings.messageId\n const subs = settings.subscriptions\n const properties = settings.properties\n\n let length = 0\n\n // Check message ID\n if (typeof id !== 'number') {\n stream.emit('error', new Error('Invalid messageId'))\n return false\n } else length += 2\n\n // properies mqtt 5\n let propertiesData = null\n if (version === 5) {\n propertiesData = getProperties(stream, properties)\n if (!propertiesData) { return false }\n length += propertiesData.length\n }\n\n // Check subscriptions\n if (typeof subs === 'object' && subs.length) {\n for (let i = 0; i < subs.length; i += 1) {\n const itopic = subs[i].topic\n const iqos = subs[i].qos\n\n if (typeof itopic !== 'string') {\n stream.emit('error', new Error('Invalid subscriptions - invalid topic'))\n return false\n }\n if (typeof iqos !== 'number') {\n stream.emit('error', new Error('Invalid subscriptions - invalid qos'))\n return false\n }\n\n if (version === 5) {\n const nl = subs[i].nl || false\n if (typeof nl !== 'boolean') {\n stream.emit('error', new Error('Invalid subscriptions - invalid No Local'))\n return false\n }\n const rap = subs[i].rap || false\n if (typeof rap !== 'boolean') {\n stream.emit('error', new Error('Invalid subscriptions - invalid Retain as Published'))\n return false\n }\n const rh = subs[i].rh || 0\n if (typeof rh !== 'number' || rh > 2) {\n stream.emit('error', new Error('Invalid subscriptions - invalid Retain Handling'))\n return false\n }\n }\n\n length += Buffer.byteLength(itopic) + 2 + 1\n }\n } else {\n stream.emit('error', new Error('Invalid subscriptions'))\n return false\n }\n\n // Generate header\n debug('subscribe: writing to stream: %o', protocol.SUBSCRIBE_HEADER)\n stream.write(protocol.SUBSCRIBE_HEADER[1][dup ? 1 : 0][0])\n\n // Generate length\n writeVarByteInt(stream, length)\n\n // Generate message ID\n writeNumber(stream, id)\n\n // properies mqtt 5\n if (propertiesData !== null) {\n propertiesData.write()\n }\n\n let result = true\n\n // Generate subs\n for (const sub of subs) {\n const jtopic = sub.topic\n const jqos = sub.qos\n const jnl = +sub.nl\n const jrap = +sub.rap\n const jrh = sub.rh\n let joptions\n\n // Write topic string\n writeString(stream, jtopic)\n\n // options process\n joptions = protocol.SUBSCRIBE_OPTIONS_QOS[jqos]\n if (version === 5) {\n joptions |= jnl ? protocol.SUBSCRIBE_OPTIONS_NL : 0\n joptions |= jrap ? protocol.SUBSCRIBE_OPTIONS_RAP : 0\n joptions |= jrh ? protocol.SUBSCRIBE_OPTIONS_RH[jrh] : 0\n }\n // Write options\n result = stream.write(Buffer.from([joptions]))\n }\n\n return result\n}\n\nfunction suback (packet, stream, opts) {\n const version = opts ? opts.protocolVersion : 4\n const settings = packet || {}\n const id = settings.messageId\n const granted = settings.granted\n const properties = settings.properties\n let length = 0\n\n // Check message ID\n if (typeof id !== 'number') {\n stream.emit('error', new Error('Invalid messageId'))\n return false\n } else length += 2\n\n // Check granted qos vector\n if (typeof granted === 'object' && granted.length) {\n for (let i = 0; i < granted.length; i += 1) {\n if (typeof granted[i] !== 'number') {\n stream.emit('error', new Error('Invalid qos vector'))\n return false\n }\n length += 1\n }\n } else {\n stream.emit('error', new Error('Invalid qos vector'))\n return false\n }\n\n // properies mqtt 5\n let propertiesData = null\n if (version === 5) {\n propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length)\n if (!propertiesData) { return false }\n length += propertiesData.length\n }\n\n // header\n stream.write(protocol.SUBACK_HEADER)\n\n // Length\n writeVarByteInt(stream, length)\n\n // Message ID\n writeNumber(stream, id)\n\n // properies mqtt 5\n if (propertiesData !== null) {\n propertiesData.write()\n }\n\n return stream.write(Buffer.from(granted))\n}\n\nfunction unsubscribe (packet, stream, opts) {\n const version = opts ? opts.protocolVersion : 4\n const settings = packet || {}\n const id = settings.messageId\n const dup = settings.dup ? protocol.DUP_MASK : 0\n const unsubs = settings.unsubscriptions\n const properties = settings.properties\n\n let length = 0\n\n // Check message ID\n if (typeof id !== 'number') {\n stream.emit('error', new Error('Invalid messageId'))\n return false\n } else {\n length += 2\n }\n // Check unsubs\n if (typeof unsubs === 'object' && unsubs.length) {\n for (let i = 0; i < unsubs.length; i += 1) {\n if (typeof unsubs[i] !== 'string') {\n stream.emit('error', new Error('Invalid unsubscriptions'))\n return false\n }\n length += Buffer.byteLength(unsubs[i]) + 2\n }\n } else {\n stream.emit('error', new Error('Invalid unsubscriptions'))\n return false\n }\n // properies mqtt 5\n let propertiesData = null\n if (version === 5) {\n propertiesData = getProperties(stream, properties)\n if (!propertiesData) { return false }\n length += propertiesData.length\n }\n\n // Header\n stream.write(protocol.UNSUBSCRIBE_HEADER[1][dup ? 1 : 0][0])\n\n // Length\n writeVarByteInt(stream, length)\n\n // Message ID\n writeNumber(stream, id)\n\n // properies mqtt 5\n if (propertiesData !== null) {\n propertiesData.write()\n }\n\n // Unsubs\n let result = true\n for (let j = 0; j < unsubs.length; j++) {\n result = writeString(stream, unsubs[j])\n }\n\n return result\n}\n\nfunction unsuback (packet, stream, opts) {\n const version = opts ? opts.protocolVersion : 4\n const settings = packet || {}\n const id = settings.messageId\n const dup = settings.dup ? protocol.DUP_MASK : 0\n const granted = settings.granted\n const properties = settings.properties\n const type = settings.cmd\n const qos = 0\n\n let length = 2\n\n // Check message ID\n if (typeof id !== 'number') {\n stream.emit('error', new Error('Invalid messageId'))\n return false\n }\n\n // Check granted\n if (version === 5) {\n if (typeof granted === 'object' && granted.length) {\n for (let i = 0; i < granted.length; i += 1) {\n if (typeof granted[i] !== 'number') {\n stream.emit('error', new Error('Invalid qos vector'))\n return false\n }\n length += 1\n }\n } else {\n stream.emit('error', new Error('Invalid qos vector'))\n return false\n }\n }\n\n // properies mqtt 5\n let propertiesData = null\n if (version === 5) {\n propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length)\n if (!propertiesData) { return false }\n length += propertiesData.length\n }\n\n // Header\n stream.write(protocol.ACKS[type][qos][dup][0])\n\n // Length\n writeVarByteInt(stream, length)\n\n // Message ID\n writeNumber(stream, id)\n\n // properies mqtt 5\n if (propertiesData !== null) {\n propertiesData.write()\n }\n\n // payload\n if (version === 5) {\n stream.write(Buffer.from(granted))\n }\n return true\n}\n\nfunction emptyPacket (packet, stream, opts) {\n return stream.write(protocol.EMPTY[packet.cmd])\n}\n\nfunction disconnect (packet, stream, opts) {\n const version = opts ? opts.protocolVersion : 4\n const settings = packet || {}\n const reasonCode = settings.reasonCode\n const properties = settings.properties\n let length = version === 5 ? 1 : 0\n\n // properies mqtt 5\n let propertiesData = null\n if (version === 5) {\n propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length)\n if (!propertiesData) { return false }\n length += propertiesData.length\n }\n\n // Header\n stream.write(Buffer.from([protocol.codes.disconnect << 4]))\n\n // Length\n writeVarByteInt(stream, length)\n\n // reason code in header\n if (version === 5) {\n stream.write(Buffer.from([reasonCode]))\n }\n\n // properies mqtt 5\n if (propertiesData !== null) {\n propertiesData.write()\n }\n\n return true\n}\n\nfunction auth (packet, stream, opts) {\n const version = opts ? opts.protocolVersion : 4\n const settings = packet || {}\n const reasonCode = settings.reasonCode\n const properties = settings.properties\n let length = version === 5 ? 1 : 0\n\n if (version !== 5) stream.emit('error', new Error('Invalid mqtt version for auth packet'))\n\n // properies mqtt 5\n const propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length)\n if (!propertiesData) { return false }\n length += propertiesData.length\n\n // Header\n stream.write(Buffer.from([protocol.codes.auth << 4]))\n\n // Length\n writeVarByteInt(stream, length)\n\n // reason code in header\n stream.write(Buffer.from([reasonCode]))\n\n // properies mqtt 5\n if (propertiesData !== null) {\n propertiesData.write()\n }\n return true\n}\n\n/**\n * writeVarByteInt - write an MQTT style variable byte integer to the buffer\n *\n * @param buffer - destination\n * @param pos - offset\n * @param length - length (>0)\n * @returns number of bytes written\n *\n * @api private\n */\n\nconst varByteIntCache = {}\nfunction writeVarByteInt (stream, num) {\n if (num > protocol.VARBYTEINT_MAX) {\n stream.emit('error', new Error(`Invalid variable byte integer: ${num}`))\n return false\n }\n\n let buffer = varByteIntCache[num]\n\n if (!buffer) {\n buffer = genBufVariableByteInt(num)\n if (num < 16384) varByteIntCache[num] = buffer\n }\n debug('writeVarByteInt: writing to stream: %o', buffer)\n return stream.write(buffer)\n}\n\n/**\n * writeString - write a utf8 string to the buffer\n *\n * @param buffer - destination\n * @param pos - offset\n * @param string - string to write\n * @return number of bytes written\n *\n * @api private\n */\n\nfunction writeString (stream, string) {\n const strlen = Buffer.byteLength(string)\n writeNumber(stream, strlen)\n\n debug('writeString: %s', string)\n return stream.write(string, 'utf8')\n}\n\n/**\n * writeStringPair - write a utf8 string pairs to the buffer\n *\n * @param buffer - destination\n * @param name - string name to write\n * @param value - string value to write\n * @return number of bytes written\n *\n * @api private\n */\nfunction writeStringPair (stream, name, value) {\n writeString(stream, name)\n writeString(stream, value)\n}\n\n/**\n * writeNumber - write a two byte number to the buffer\n *\n * @param buffer - destination\n * @param pos - offset\n * @param number - number to write\n * @return number of bytes written\n *\n * @api private\n */\nfunction writeNumberCached (stream, number) {\n debug('writeNumberCached: number: %d', number)\n debug('writeNumberCached: %o', numCache[number])\n return stream.write(numCache[number])\n}\nfunction writeNumberGenerated (stream, number) {\n const generatedNumber = generateNumber(number)\n debug('writeNumberGenerated: %o', generatedNumber)\n return stream.write(generatedNumber)\n}\nfunction write4ByteNumber (stream, number) {\n const generated4ByteBuffer = generate4ByteBuffer(number)\n debug('write4ByteNumber: %o', generated4ByteBuffer)\n return stream.write(generated4ByteBuffer)\n}\n/**\n * writeStringOrBuffer - write a String or Buffer with the its length prefix\n *\n * @param buffer - destination\n * @param pos - offset\n * @param toWrite - String or Buffer\n * @return number of bytes written\n */\nfunction writeStringOrBuffer (stream, toWrite) {\n if (typeof toWrite === 'string') {\n writeString(stream, toWrite)\n } else if (toWrite) {\n writeNumber(stream, toWrite.length)\n stream.write(toWrite)\n } else writeNumber(stream, 0)\n}\n\nfunction getProperties (stream, properties) {\n /* connect properties */\n if (typeof properties !== 'object' || properties.length != null) {\n return {\n length: 1,\n write () {\n writeProperties(stream, {}, 0)\n }\n }\n }\n let propertiesLength = 0\n function getLengthProperty (name, value) {\n const type = protocol.propertiesTypes[name]\n let length = 0\n switch (type) {\n case 'byte': {\n if (typeof value !== 'boolean') {\n stream.emit('error', new Error(`Invalid ${name}: ${value}`))\n return false\n }\n length += 1 + 1\n break\n }\n case 'int8': {\n if (typeof value !== 'number' || value < 0 || value > 0xff) {\n stream.emit('error', new Error(`Invalid ${name}: ${value}`))\n return false\n }\n length += 1 + 1\n break\n }\n case 'binary': {\n if (value && value === null) {\n stream.emit('error', new Error(`Invalid ${name}: ${value}`))\n return false\n }\n length += 1 + Buffer.byteLength(value) + 2\n break\n }\n case 'int16': {\n if (typeof value !== 'number' || value < 0 || value > 0xffff) {\n stream.emit('error', new Error(`Invalid ${name}: ${value}`))\n return false\n }\n length += 1 + 2\n break\n }\n case 'int32': {\n if (typeof value !== 'number' || value < 0 || value > 0xffffffff) {\n stream.emit('error', new Error(`Invalid ${name}: ${value}`))\n return false\n }\n length += 1 + 4\n break\n }\n case 'var': {\n // var byte integer is max 24 bits packed in 32 bits\n if (typeof value !== 'number' || value < 0 || value > 0x0fffffff) {\n stream.emit('error', new Error(`Invalid ${name}: ${value}`))\n return false\n }\n length += 1 + Buffer.byteLength(genBufVariableByteInt(value))\n break\n }\n case 'string': {\n if (typeof value !== 'string') {\n stream.emit('error', new Error(`Invalid ${name}: ${value}`))\n return false\n }\n length += 1 + 2 + Buffer.byteLength(value.toString())\n break\n }\n case 'pair': {\n if (typeof value !== 'object') {\n stream.emit('error', new Error(`Invalid ${name}: ${value}`))\n return false\n }\n length += Object.getOwnPropertyNames(value).reduce((result, name) => {\n const currentValue = value[name]\n if (Array.isArray(currentValue)) {\n result += currentValue.reduce((currentLength, value) => {\n currentLength += 1 + 2 + Buffer.byteLength(name.toString()) + 2 + Buffer.byteLength(value.toString())\n return currentLength\n }, 0)\n } else {\n result += 1 + 2 + Buffer.byteLength(name.toString()) + 2 + Buffer.byteLength(value[name].toString())\n }\n return result\n }, 0)\n break\n }\n default: {\n stream.emit('error', new Error(`Invalid property ${name}: ${value}`))\n return false\n }\n }\n return length\n }\n if (properties) {\n for (const propName in properties) {\n let propLength = 0\n let propValueLength = 0\n const propValue = properties[propName]\n if (Array.isArray(propValue)) {\n for (let valueIndex = 0; valueIndex < propValue.length; valueIndex++) {\n propValueLength = getLengthProperty(propName, propValue[valueIndex])\n if (!propValueLength) { return false }\n propLength += propValueLength\n }\n } else {\n propValueLength = getLengthProperty(propName, propValue)\n if (!propValueLength) { return false }\n propLength = propValueLength\n }\n if (!propLength) return false\n propertiesLength += propLength\n }\n }\n const propertiesLengthLength = Buffer.byteLength(genBufVariableByteInt(propertiesLength))\n\n return {\n length: propertiesLengthLength + propertiesLength,\n write () {\n writeProperties(stream, properties, propertiesLength)\n }\n }\n}\n\nfunction getPropertiesByMaximumPacketSize (stream, properties, opts, length) {\n const mayEmptyProps = ['reasonString', 'userProperties']\n const maximumPacketSize = opts && opts.properties && opts.properties.maximumPacketSize ? opts.properties.maximumPacketSize : 0\n\n let propertiesData = getProperties(stream, properties)\n if (maximumPacketSize) {\n while (length + propertiesData.length > maximumPacketSize) {\n const currentMayEmptyProp = mayEmptyProps.shift()\n if (currentMayEmptyProp && properties[currentMayEmptyProp]) {\n delete properties[currentMayEmptyProp]\n propertiesData = getProperties(stream, properties)\n } else {\n return false\n }\n }\n }\n return propertiesData\n}\n\nfunction writeProperty (stream, propName, value) {\n const type = protocol.propertiesTypes[propName]\n switch (type) {\n case 'byte': {\n stream.write(Buffer.from([protocol.properties[propName]]))\n stream.write(Buffer.from([+value]))\n break\n }\n case 'int8': {\n stream.write(Buffer.from([protocol.properties[propName]]))\n stream.write(Buffer.from([value]))\n break\n }\n case 'binary': {\n stream.write(Buffer.from([protocol.properties[propName]]))\n writeStringOrBuffer(stream, value)\n break\n }\n case 'int16': {\n stream.write(Buffer.from([protocol.properties[propName]]))\n writeNumber(stream, value)\n break\n }\n case 'int32': {\n stream.write(Buffer.from([protocol.properties[propName]]))\n write4ByteNumber(stream, value)\n break\n }\n case 'var': {\n stream.write(Buffer.from([protocol.properties[propName]]))\n writeVarByteInt(stream, value)\n break\n }\n case 'string': {\n stream.write(Buffer.from([protocol.properties[propName]]))\n writeString(stream, value)\n break\n }\n case 'pair': {\n Object.getOwnPropertyNames(value).forEach(name => {\n const currentValue = value[name]\n if (Array.isArray(currentValue)) {\n currentValue.forEach(value => {\n stream.write(Buffer.from([protocol.properties[propName]]))\n writeStringPair(stream, name.toString(), value.toString())\n })\n } else {\n stream.write(Buffer.from([protocol.properties[propName]]))\n writeStringPair(stream, name.toString(), currentValue.toString())\n }\n })\n break\n }\n default: {\n stream.emit('error', new Error(`Invalid property ${propName} value: ${value}`))\n return false\n }\n }\n}\n\nfunction writeProperties (stream, properties, propertiesLength) {\n /* write properties to stream */\n writeVarByteInt(stream, propertiesLength)\n for (const propName in properties) {\n if (Object.prototype.hasOwnProperty.call(properties, propName) && properties[propName] !== null) {\n const value = properties[propName]\n if (Array.isArray(value)) {\n for (let valueIndex = 0; valueIndex < value.length; valueIndex++) {\n writeProperty(stream, propName, value[valueIndex])\n }\n } else {\n writeProperty(stream, propName, value)\n }\n }\n }\n}\n\nfunction byteLength (bufOrString) {\n if (!bufOrString) return 0\n else if (bufOrString instanceof Buffer) return bufOrString.length\n else return Buffer.byteLength(bufOrString)\n}\n\nfunction isStringOrBuffer (field) {\n return typeof field === 'string' || field instanceof Buffer\n}\n\nmodule.exports = generate\n","'use strict'\n\n/**\n * Module dependencies\n */\nconst EventEmitter = require('events').EventEmitter\nconst Store = require('./store')\nconst TopicAliasRecv = require('./topic-alias-recv')\nconst TopicAliasSend = require('./topic-alias-send')\nconst mqttPacket = require('mqtt-packet')\nconst DefaultMessageIdProvider = require('./default-message-id-provider')\nconst Writable = require('readable-stream').Writable\nconst inherits = require('inherits')\nconst reInterval = require('reinterval')\nconst clone = require('rfdc/default')\nconst validations = require('./validations')\nconst xtend = require('xtend')\nconst debug = require('debug')('mqttjs:client')\nconst nextTick = process ? process.nextTick : function (callback) { setTimeout(callback, 0) }\nconst setImmediate = global.setImmediate || function (callback) {\n // works in node v0.8\n nextTick(callback)\n}\nconst defaultConnectOptions = {\n keepalive: 60,\n reschedulePings: true,\n protocolId: 'MQTT',\n protocolVersion: 4,\n reconnectPeriod: 1000,\n connectTimeout: 30 * 1000,\n clean: true,\n resubscribe: true\n}\n\n\nconst errors = {\n 0: '',\n 1: 'Unacceptable protocol version',\n 2: 'Identifier rejected',\n 3: 'Server unavailable',\n 4: 'Bad username or password',\n 5: 'Not authorized',\n 16: 'No matching subscribers',\n 17: 'No subscription existed',\n 128: 'Unspecified error',\n 129: 'Malformed Packet',\n 130: 'Protocol Error',\n 131: 'Implementation specific error',\n 132: 'Unsupported Protocol Version',\n 133: 'Client Identifier not valid',\n 134: 'Bad User Name or Password',\n 135: 'Not authorized',\n 136: 'Server unavailable',\n 137: 'Server busy',\n 138: 'Banned',\n 139: 'Server shutting down',\n 140: 'Bad authentication method',\n 141: 'Keep Alive timeout',\n 142: 'Session taken over',\n 143: 'Topic Filter invalid',\n 144: 'Topic Name invalid',\n 145: 'Packet identifier in use',\n 146: 'Packet Identifier not found',\n 147: 'Receive Maximum exceeded',\n 148: 'Topic Alias invalid',\n 149: 'Packet too large',\n 150: 'Message rate too high',\n 151: 'Quota exceeded',\n 152: 'Administrative action',\n 153: 'Payload format invalid',\n 154: 'Retain not supported',\n 155: 'QoS not supported',\n 156: 'Use another server',\n 157: 'Server moved',\n 158: 'Shared Subscriptions not supported',\n 159: 'Connection rate exceeded',\n 160: 'Maximum connect time',\n 161: 'Subscription Identifiers not supported',\n 162: 'Wildcard Subscriptions not supported'\n}\n\nfunction defaultId () {\n return 'mqttjs_' + Math.random().toString(16).substr(2, 8)\n}\n\nfunction applyTopicAlias (client, packet) {\n if (client.options.protocolVersion === 5) {\n if (packet.cmd === 'publish') {\n let alias\n if (packet.properties) {\n alias = packet.properties.topicAlias\n }\n const topic = packet.topic.toString()\n if (client.topicAliasSend) {\n if (alias) {\n if (topic.length !== 0) {\n // register topic alias\n debug('applyTopicAlias :: register topic: %s - alias: %d', topic, alias)\n if (!client.topicAliasSend.put(topic, alias)) {\n debug('applyTopicAlias :: error out of range. topic: %s - alias: %d', topic, alias)\n return new Error('Sending Topic Alias out of range')\n }\n }\n } else {\n if (topic.length !== 0) {\n if (client.options.autoAssignTopicAlias) {\n alias = client.topicAliasSend.getAliasByTopic(topic)\n if (alias) {\n packet.topic = ''\n packet.properties = { ...(packet.properties), topicAlias: alias }\n debug('applyTopicAlias :: auto assign(use) topic: %s - alias: %d', topic, alias)\n } else {\n alias = client.topicAliasSend.getLruAlias()\n client.topicAliasSend.put(topic, alias)\n packet.properties = { ...(packet.properties), topicAlias: alias }\n debug('applyTopicAlias :: auto assign topic: %s - alias: %d', topic, alias)\n }\n } else if (client.options.autoUseTopicAlias) {\n alias = client.topicAliasSend.getAliasByTopic(topic)\n if (alias) {\n packet.topic = ''\n packet.properties = { ...(packet.properties), topicAlias: alias }\n debug('applyTopicAlias :: auto use topic: %s - alias: %d', topic, alias)\n }\n }\n }\n }\n } else if (alias) {\n debug('applyTopicAlias :: error out of range. topic: %s - alias: %d', topic, alias)\n return new Error('Sending Topic Alias out of range')\n }\n }\n }\n}\n\nfunction removeTopicAliasAndRecoverTopicName (client, packet) {\n let alias\n if (packet.properties) {\n alias = packet.properties.topicAlias\n }\n\n let topic = packet.topic.toString()\n if (topic.length === 0) {\n // restore topic from alias\n if (typeof alias === 'undefined') {\n return new Error('Unregistered Topic Alias')\n } else {\n topic = client.topicAliasSend.getTopicByAlias(alias)\n if (typeof topic === 'undefined') {\n return new Error('Unregistered Topic Alias')\n } else {\n packet.topic = topic\n }\n }\n }\n if (alias) {\n delete packet.properties.topicAlias\n }\n}\n\nfunction sendPacket (client, packet, cb) {\n debug('sendPacket :: packet: %O', packet)\n debug('sendPacket :: emitting `packetsend`')\n\n client.emit('packetsend', packet)\n\n debug('sendPacket :: writing to stream')\n const result = mqttPacket.writeToStream(packet, client.stream, client.options)\n debug('sendPacket :: writeToStream result %s', result)\n if (!result && cb && cb !== nop) {\n debug('sendPacket :: handle events on `drain` once through callback.')\n client.stream.once('drain', cb)\n } else if (cb) {\n debug('sendPacket :: invoking cb')\n cb()\n }\n}\n\nfunction flush (queue) {\n if (queue) {\n debug('flush: queue exists? %b', !!(queue))\n Object.keys(queue).forEach(function (messageId) {\n if (typeof queue[messageId].cb === 'function') {\n queue[messageId].cb(new Error('Connection closed'))\n // This is suspicious. Why do we only delete this if we have a callbck?\n // If this is by-design, then adding no as callback would cause this to get deleted unintentionally.\n delete queue[messageId]\n }\n })\n }\n}\n\nfunction flushVolatile (queue) {\n if (queue) {\n debug('flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function')\n Object.keys(queue).forEach(function (messageId) {\n if (queue[messageId].volatile && typeof queue[messageId].cb === 'function') {\n queue[messageId].cb(new Error('Connection closed'))\n delete queue[messageId]\n }\n })\n }\n}\n\nfunction storeAndSend (client, packet, cb, cbStorePut) {\n debug('storeAndSend :: store packet with cmd %s to outgoingStore', packet.cmd)\n let storePacket = packet\n let err\n if (storePacket.cmd === 'publish') {\n // The original packet is for sending.\n // The cloned storePacket is for storing to resend on reconnect.\n // Topic Alias must not be used after disconnected.\n storePacket = clone(packet)\n err = removeTopicAliasAndRecoverTopicName(client, storePacket)\n if (err) {\n return cb && cb(err)\n }\n }\n client.outgoingStore.put(storePacket, function storedPacket (err) {\n if (err) {\n return cb && cb(err)\n }\n cbStorePut()\n sendPacket(client, packet, cb)\n })\n}\n\nfunction nop (error) {\n debug('nop ::', error)\n}\n\n/**\n * MqttClient constructor\n *\n * @param {Stream} stream - stream\n * @param {Object} [options] - connection options\n * (see Connection#connect)\n */\nfunction MqttClient (streamBuilder, options) {\n let k\n const that = this\n\n if (!(this instanceof MqttClient)) {\n return new MqttClient(streamBuilder, options)\n }\n\n this.options = options || {}\n\n // Defaults\n for (k in defaultConnectOptions) {\n if (typeof this.options[k] === 'undefined') {\n this.options[k] = defaultConnectOptions[k]\n } else {\n this.options[k] = options[k]\n }\n }\n\n debug('MqttClient :: options.protocol', options.protocol)\n debug('MqttClient :: options.protocolVersion', options.protocolVersion)\n debug('MqttClient :: options.username', options.username)\n debug('MqttClient :: options.keepalive', options.keepalive)\n debug('MqttClient :: options.reconnectPeriod', options.reconnectPeriod)\n debug('MqttClient :: options.rejectUnauthorized', options.rejectUnauthorized)\n debug('MqttClient :: options.topicAliasMaximum', options.topicAliasMaximum)\n\n this.options.clientId = (typeof options.clientId === 'string') ? options.clientId : defaultId()\n\n debug('MqttClient :: clientId', this.options.clientId)\n\n this.options.customHandleAcks = (options.protocolVersion === 5 && options.customHandleAcks) ? options.customHandleAcks : function () { arguments[3](0) }\n\n this.streamBuilder = streamBuilder\n\n this.messageIdProvider = (typeof this.options.messageIdProvider === 'undefined') ? new DefaultMessageIdProvider() : this.options.messageIdProvider\n\n // Inflight message storages\n this.outgoingStore = options.outgoingStore || new Store()\n this.incomingStore = options.incomingStore || new Store()\n\n // Should QoS zero messages be queued when the connection is broken?\n this.queueQoSZero = options.queueQoSZero === undefined ? true : options.queueQoSZero\n\n // map of subscribed topics to support reconnection\n this._resubscribeTopics = {}\n\n // map of a subscribe messageId and a topic\n this.messageIdToTopic = {}\n\n // Ping timer, setup in _setupPingTimer\n this.pingTimer = null\n // Is the client connected?\n this.connected = false\n // Are we disconnecting?\n this.disconnecting = false\n // Packet queue\n this.queue = []\n // connack timer\n this.connackTimer = null\n // Reconnect timer\n this.reconnectTimer = null\n // Is processing store?\n this._storeProcessing = false\n // Packet Ids are put into the store during store processing\n this._packetIdsDuringStoreProcessing = {}\n // Store processing queue\n this._storeProcessingQueue = []\n\n // Inflight callbacks\n this.outgoing = {}\n\n // True if connection is first time.\n this._firstConnection = true\n\n if (options.topicAliasMaximum > 0) {\n if (options.topicAliasMaximum > 0xffff) {\n debug('MqttClient :: options.topicAliasMaximum is out of range')\n } else {\n this.topicAliasRecv = new TopicAliasRecv(options.topicAliasMaximum)\n }\n }\n\n // Send queued packets\n this.on('connect', function () {\n const queue = this.queue\n\n function deliver () {\n const entry = queue.shift()\n debug('deliver :: entry %o', entry)\n let packet = null\n\n if (!entry) {\n that._resubscribe()\n return\n }\n\n packet = entry.packet\n debug('deliver :: call _sendPacket for %o', packet)\n let send = true\n if (packet.messageId && packet.messageId !== 0) {\n if (!that.messageIdProvider.register(packet.messageId)) {\n send = false\n }\n }\n if (send) {\n that._sendPacket(\n packet,\n function (err) {\n if (entry.cb) {\n entry.cb(err)\n }\n deliver()\n }\n )\n } else {\n debug('messageId: %d has already used. The message is skipped and removed.', packet.messageId)\n deliver()\n }\n }\n\n debug('connect :: sending queued packets')\n deliver()\n })\n\n this.on('close', function () {\n debug('close :: connected set to `false`')\n this.connected = false\n\n debug('close :: clearing connackTimer')\n clearTimeout(this.connackTimer)\n\n debug('close :: clearing ping timer')\n if (that.pingTimer !== null) {\n that.pingTimer.clear()\n that.pingTimer = null\n }\n\n if (this.topicAliasRecv) {\n this.topicAliasRecv.clear()\n }\n\n debug('close :: calling _setupReconnect')\n this._setupReconnect()\n })\n EventEmitter.call(this)\n\n debug('MqttClient :: setting up stream')\n this._setupStream()\n}\ninherits(MqttClient, EventEmitter)\n\n/**\n * setup the event handlers in the inner stream.\n *\n * @api private\n */\nMqttClient.prototype._setupStream = function () {\n const that = this\n const writable = new Writable()\n const parser = mqttPacket.parser(this.options)\n let completeParse = null\n const packets = []\n\n debug('_setupStream :: calling method to clear reconnect')\n this._clearReconnect()\n\n debug('_setupStream :: using streamBuilder provided to client to create stream')\n this.stream = this.streamBuilder(this)\n\n parser.on('packet', function (packet) {\n debug('parser :: on packet push to packets array.')\n packets.push(packet)\n })\n\n function nextTickWork () {\n if (packets.length) {\n nextTick(work)\n } else {\n const done = completeParse\n completeParse = null\n done()\n }\n }\n\n function work () {\n debug('work :: getting next packet in queue')\n const packet = packets.shift()\n\n if (packet) {\n debug('work :: packet pulled from queue')\n that._handlePacket(packet, nextTickWork)\n } else {\n debug('work :: no packets in queue')\n const done = completeParse\n completeParse = null\n debug('work :: done flag is %s', !!(done))\n if (done) done()\n }\n }\n\n writable._write = function (buf, enc, done) {\n completeParse = done\n debug('writable stream :: parsing buffer')\n parser.parse(buf)\n work()\n }\n\n function streamErrorHandler (error) {\n debug('streamErrorHandler :: error', error.message)\n // error.code will only be set on NodeJS env, browse don't allow to detect erros on sockets\n // also emitting errors on browser seems to create issues \n if (error.code) {\n // handle error\n debug('streamErrorHandler :: emitting error')\n that.emit('error', error)\n } else {\n nop(error)\n }\n }\n\n debug('_setupStream :: pipe stream to writable stream')\n this.stream.pipe(writable)\n\n // Suppress connection errors\n this.stream.on('error', streamErrorHandler)\n\n // Echo stream close\n this.stream.on('close', function () {\n debug('(%s)stream :: on close', that.options.clientId)\n flushVolatile(that.outgoing)\n debug('stream: emit close to MqttClient')\n that.emit('close')\n })\n\n // Send a connect packet\n debug('_setupStream: sending packet `connect`')\n const connectPacket = Object.create(this.options)\n connectPacket.cmd = 'connect'\n if (this.topicAliasRecv) {\n if (!connectPacket.properties) {\n connectPacket.properties = {}\n }\n if (this.topicAliasRecv) {\n connectPacket.properties.topicAliasMaximum = this.topicAliasRecv.max\n }\n }\n // avoid message queue\n sendPacket(this, connectPacket)\n\n // Echo connection errors\n parser.on('error', this.emit.bind(this, 'error'))\n\n // auth\n if (this.options.properties) {\n if (!this.options.properties.authenticationMethod && this.options.properties.authenticationData) {\n that.end(() =>\n this.emit('error', new Error('Packet has no Authentication Method')\n ))\n return this\n }\n if (this.options.properties.authenticationMethod && this.options.authPacket && typeof this.options.authPacket === 'object') {\n const authPacket = xtend({ cmd: 'auth', reasonCode: 0 }, this.options.authPacket)\n sendPacket(this, authPacket)\n }\n }\n\n // many drain listeners are needed for qos 1 callbacks if the connection is intermittent\n this.stream.setMaxListeners(1000)\n\n clearTimeout(this.connackTimer)\n this.connackTimer = setTimeout(function () {\n debug('!!connectTimeout hit!! Calling _cleanUp with force `true`')\n that._cleanUp(true)\n }, this.options.connectTimeout)\n}\n\nMqttClient.prototype._handlePacket = function (packet, done) {\n const options = this.options\n\n if (options.protocolVersion === 5 && options.properties && options.properties.maximumPacketSize && options.properties.maximumPacketSize < packet.length) {\n this.emit('error', new Error('exceeding packets size ' + packet.cmd))\n this.end({ reasonCode: 149, properties: { reasonString: 'Maximum packet size was exceeded' } })\n return this\n }\n debug('_handlePacket :: emitting packetreceive')\n this.emit('packetreceive', packet)\n\n switch (packet.cmd) {\n case 'publish':\n this._handlePublish(packet, done)\n break\n case 'puback':\n case 'pubrec':\n case 'pubcomp':\n case 'suback':\n case 'unsuback':\n this._handleAck(packet)\n done()\n break\n case 'pubrel':\n this._handlePubrel(packet, done)\n break\n case 'connack':\n this._handleConnack(packet)\n done()\n break\n case 'auth':\n this._handleAuth(packet)\n done()\n break\n case 'pingresp':\n this._handlePingresp(packet)\n done()\n break\n case 'disconnect':\n this._handleDisconnect(packet)\n done()\n break\n default:\n // do nothing\n // maybe we should do an error handling\n // or just log it\n break\n }\n}\n\nMqttClient.prototype._checkDisconnecting = function (callback) {\n if (this.disconnecting) {\n if (callback && callback !== nop) {\n callback(new Error('client disconnecting'))\n } else {\n this.emit('error', new Error('client disconnecting'))\n }\n }\n return this.disconnecting\n}\n\n/**\n * publish - publish to \n *\n * @param {String} topic - topic to publish to\n * @param {String, Buffer} message - message to publish\n * @param {Object} [opts] - publish options, includes:\n * {Number} qos - qos level to publish on\n * {Boolean} retain - whether or not to retain the message\n * {Boolean} dup - whether or not mark a message as duplicate\n * {Function} cbStorePut - function(){} called when message is put into `outgoingStore`\n * @param {Function} [callback] - function(err){}\n * called when publish succeeds or fails\n * @returns {MqttClient} this - for chaining\n * @api public\n *\n * @example client.publish('topic', 'message');\n * @example\n * client.publish('topic', 'message', {qos: 1, retain: true, dup: true});\n * @example client.publish('topic', 'message', console.log);\n */\nMqttClient.prototype.publish = function (topic, message, opts, callback) {\n debug('publish :: message `%s` to topic `%s`', message, topic)\n const options = this.options\n\n // .publish(topic, payload, cb);\n if (typeof opts === 'function') {\n callback = opts\n opts = null\n }\n\n // default opts\n const defaultOpts = { qos: 0, retain: false, dup: false }\n opts = xtend(defaultOpts, opts)\n\n if (this._checkDisconnecting(callback)) {\n return this\n }\n\n const that = this\n const publishProc = function () {\n let messageId = 0\n if (opts.qos === 1 || opts.qos === 2) {\n messageId = that._nextId()\n if (messageId === null) {\n debug('No messageId left')\n return false\n }\n }\n const packet = {\n cmd: 'publish',\n topic: topic,\n payload: message,\n qos: opts.qos,\n retain: opts.retain,\n messageId: messageId,\n dup: opts.dup\n }\n\n if (options.protocolVersion === 5) {\n packet.properties = opts.properties\n }\n\n debug('publish :: qos', opts.qos)\n switch (opts.qos) {\n case 1:\n case 2:\n // Add to callbacks\n that.outgoing[packet.messageId] = {\n volatile: false,\n cb: callback || nop\n }\n debug('MqttClient:publish: packet cmd: %s', packet.cmd)\n that._sendPacket(packet, undefined, opts.cbStorePut)\n break\n default:\n debug('MqttClient:publish: packet cmd: %s', packet.cmd)\n that._sendPacket(packet, callback, opts.cbStorePut)\n break\n }\n return true\n }\n\n if (this._storeProcessing || this._storeProcessingQueue.length > 0 || !publishProc()) {\n this._storeProcessingQueue.push(\n {\n invoke: publishProc,\n cbStorePut: opts.cbStorePut,\n callback: callback\n }\n )\n }\n return this\n}\n\n/**\n * subscribe - subscribe to \n *\n * @param {String, Array, Object} topic - topic(s) to subscribe to, supports objects in the form {'topic': qos}\n * @param {Object} [opts] - optional subscription options, includes:\n * {Number} qos - subscribe qos level\n * @param {Function} [callback] - function(err, granted){} where:\n * {Error} err - subscription error (none at the moment!)\n * {Array} granted - array of {topic: 't', qos: 0}\n * @returns {MqttClient} this - for chaining\n * @api public\n * @example client.subscribe('topic');\n * @example client.subscribe('topic', {qos: 1});\n * @example client.subscribe({'topic': {qos: 0}, 'topic2': {qos: 1}}, console.log);\n * @example client.subscribe('topic', console.log);\n */\nMqttClient.prototype.subscribe = function () {\n const that = this\n const args = new Array(arguments.length)\n for (let i = 0; i < arguments.length; i++) {\n args[i] = arguments[i]\n }\n const subs = []\n let obj = args.shift()\n const resubscribe = obj.resubscribe\n let callback = args.pop() || nop\n let opts = args.pop()\n const version = this.options.protocolVersion\n\n delete obj.resubscribe\n\n if (typeof obj === 'string') {\n obj = [obj]\n }\n\n if (typeof callback !== 'function') {\n opts = callback\n callback = nop\n }\n\n const invalidTopic = validations.validateTopics(obj)\n if (invalidTopic !== null) {\n setImmediate(callback, new Error('Invalid topic ' + invalidTopic))\n return this\n }\n\n if (this._checkDisconnecting(callback)) {\n debug('subscribe: discconecting true')\n return this\n }\n\n const defaultOpts = {\n qos: 0\n }\n if (version === 5) {\n defaultOpts.nl = false\n defaultOpts.rap = false\n defaultOpts.rh = 0\n }\n opts = xtend(defaultOpts, opts)\n\n if (Array.isArray(obj)) {\n obj.forEach(function (topic) {\n debug('subscribe: array topic %s', topic)\n if (!Object.prototype.hasOwnProperty.call(that._resubscribeTopics, topic) ||\n that._resubscribeTopics[topic].qos < opts.qos ||\n resubscribe) {\n const currentOpts = {\n topic: topic,\n qos: opts.qos\n }\n if (version === 5) {\n currentOpts.nl = opts.nl\n currentOpts.rap = opts.rap\n currentOpts.rh = opts.rh\n currentOpts.properties = opts.properties\n }\n debug('subscribe: pushing topic `%s` and qos `%s` to subs list', currentOpts.topic, currentOpts.qos)\n subs.push(currentOpts)\n }\n })\n } else {\n Object\n .keys(obj)\n .forEach(function (k) {\n debug('subscribe: object topic %s', k)\n if (!Object.prototype.hasOwnProperty.call(that._resubscribeTopics, k) ||\n that._resubscribeTopics[k].qos < obj[k].qos ||\n resubscribe) {\n const currentOpts = {\n topic: k,\n qos: obj[k].qos\n }\n if (version === 5) {\n currentOpts.nl = obj[k].nl\n currentOpts.rap = obj[k].rap\n currentOpts.rh = obj[k].rh\n currentOpts.properties = opts.properties\n }\n debug('subscribe: pushing `%s` to subs list', currentOpts)\n subs.push(currentOpts)\n }\n })\n }\n\n if (!subs.length) {\n callback(null, [])\n return this\n }\n\n const subscribeProc = function () {\n const messageId = that._nextId()\n if (messageId === null) {\n debug('No messageId left')\n return false\n }\n\n const packet = {\n cmd: 'subscribe',\n subscriptions: subs,\n qos: 1,\n retain: false,\n dup: false,\n messageId: messageId\n }\n\n if (opts.properties) {\n packet.properties = opts.properties\n }\n\n // subscriptions to resubscribe to in case of disconnect\n if (that.options.resubscribe) {\n debug('subscribe :: resubscribe true')\n const topics = []\n subs.forEach(function (sub) {\n if (that.options.reconnectPeriod > 0) {\n const topic = { qos: sub.qos }\n if (version === 5) {\n topic.nl = sub.nl || false\n topic.rap = sub.rap || false\n topic.rh = sub.rh || 0\n topic.properties = sub.properties\n }\n that._resubscribeTopics[sub.topic] = topic\n topics.push(sub.topic)\n }\n })\n that.messageIdToTopic[packet.messageId] = topics\n }\n\n that.outgoing[packet.messageId] = {\n volatile: true,\n cb: function (err, packet) {\n if (!err) {\n const granted = packet.granted\n for (let i = 0; i < granted.length; i += 1) {\n subs[i].qos = granted[i]\n }\n }\n\n callback(err, subs)\n }\n }\n debug('subscribe :: call _sendPacket')\n that._sendPacket(packet)\n return true\n }\n\n if (this._storeProcessing || this._storeProcessingQueue.length > 0 || !subscribeProc()) {\n this._storeProcessingQueue.push(\n {\n invoke: subscribeProc,\n callback: callback\n }\n )\n }\n\n return this\n}\n\n/**\n * unsubscribe - unsubscribe from topic(s)\n *\n * @param {String, Array} topic - topics to unsubscribe from\n * @param {Object} [opts] - optional subscription options, includes:\n * {Object} properties - properties of unsubscribe packet\n * @param {Function} [callback] - callback fired on unsuback\n * @returns {MqttClient} this - for chaining\n * @api public\n * @example client.unsubscribe('topic');\n * @example client.unsubscribe('topic', console.log);\n */\nMqttClient.prototype.unsubscribe = function () {\n const that = this\n const args = new Array(arguments.length)\n for (let i = 0; i < arguments.length; i++) {\n args[i] = arguments[i]\n }\n let topic = args.shift()\n let callback = args.pop() || nop\n let opts = args.pop()\n if (typeof topic === 'string') {\n topic = [topic]\n }\n\n if (typeof callback !== 'function') {\n opts = callback\n callback = nop\n }\n\n const invalidTopic = validations.validateTopics(topic)\n if (invalidTopic !== null) {\n setImmediate(callback, new Error('Invalid topic ' + invalidTopic))\n return this\n }\n\n if (that._checkDisconnecting(callback)) {\n return this\n }\n\n const unsubscribeProc = function () {\n const messageId = that._nextId()\n if (messageId === null) {\n debug('No messageId left')\n return false\n }\n const packet = {\n cmd: 'unsubscribe',\n qos: 1,\n messageId: messageId\n }\n\n if (typeof topic === 'string') {\n packet.unsubscriptions = [topic]\n } else if (Array.isArray(topic)) {\n packet.unsubscriptions = topic\n }\n\n if (that.options.resubscribe) {\n packet.unsubscriptions.forEach(function (topic) {\n delete that._resubscribeTopics[topic]\n })\n }\n\n if (typeof opts === 'object' && opts.properties) {\n packet.properties = opts.properties\n }\n\n that.outgoing[packet.messageId] = {\n volatile: true,\n cb: callback\n }\n\n debug('unsubscribe: call _sendPacket')\n that._sendPacket(packet)\n\n return true\n }\n\n if (this._storeProcessing || this._storeProcessingQueue.length > 0 || !unsubscribeProc()) {\n this._storeProcessingQueue.push(\n {\n invoke: unsubscribeProc,\n callback: callback\n }\n )\n }\n\n return this\n}\n\n/**\n * end - close connection\n *\n * @returns {MqttClient} this - for chaining\n * @param {Boolean} force - do not wait for all in-flight messages to be acked\n * @param {Object} opts - added to the disconnect packet\n * @param {Function} cb - called when the client has been closed\n *\n * @api public\n */\nMqttClient.prototype.end = function (force, opts, cb) {\n const that = this\n\n debug('end :: (%s)', this.options.clientId)\n\n if (force == null || typeof force !== 'boolean') {\n cb = opts || nop\n opts = force\n force = false\n if (typeof opts !== 'object') {\n cb = opts\n opts = null\n if (typeof cb !== 'function') {\n cb = nop\n }\n }\n }\n\n if (typeof opts !== 'object') {\n cb = opts\n opts = null\n }\n\n debug('end :: cb? %s', !!cb)\n cb = cb || nop\n\n function closeStores () {\n debug('end :: closeStores: closing incoming and outgoing stores')\n that.disconnected = true\n that.incomingStore.close(function (e1) {\n that.outgoingStore.close(function (e2) {\n debug('end :: closeStores: emitting end')\n that.emit('end')\n if (cb) {\n const err = e1 || e2\n debug('end :: closeStores: invoking callback with args')\n cb(err)\n }\n })\n })\n if (that._deferredReconnect) {\n that._deferredReconnect()\n }\n }\n\n function finish () {\n // defer closesStores of an I/O cycle,\n // just to make sure things are\n // ok for websockets\n debug('end :: (%s) :: finish :: calling _cleanUp with force %s', that.options.clientId, force)\n that._cleanUp(force, () => {\n debug('end :: finish :: calling process.nextTick on closeStores')\n // const boundProcess = nextTick.bind(null, closeStores)\n nextTick(closeStores.bind(that))\n }, opts)\n }\n\n if (this.disconnecting) {\n cb()\n return this\n }\n\n this._clearReconnect()\n\n this.disconnecting = true\n\n if (!force && Object.keys(this.outgoing).length > 0) {\n // wait 10ms, just to be sure we received all of it\n debug('end :: (%s) :: calling finish in 10ms once outgoing is empty', that.options.clientId)\n this.once('outgoingEmpty', setTimeout.bind(null, finish, 10))\n } else {\n debug('end :: (%s) :: immediately calling finish', that.options.clientId)\n finish()\n }\n\n return this\n}\n\n/**\n * removeOutgoingMessage - remove a message in outgoing store\n * the outgoing callback will be called withe Error('Message removed') if the message is removed\n *\n * @param {Number} messageId - messageId to remove message\n * @returns {MqttClient} this - for chaining\n * @api public\n *\n * @example client.removeOutgoingMessage(client.getLastAllocated());\n */\nMqttClient.prototype.removeOutgoingMessage = function (messageId) {\n const cb = this.outgoing[messageId] ? this.outgoing[messageId].cb : null\n delete this.outgoing[messageId]\n this.outgoingStore.del({ messageId: messageId }, function () {\n cb(new Error('Message removed'))\n })\n return this\n}\n\n/**\n * reconnect - connect again using the same options as connect()\n *\n * @param {Object} [opts] - optional reconnect options, includes:\n * {Store} incomingStore - a store for the incoming packets\n * {Store} outgoingStore - a store for the outgoing packets\n * if opts is not given, current stores are used\n * @returns {MqttClient} this - for chaining\n *\n * @api public\n */\nMqttClient.prototype.reconnect = function (opts) {\n debug('client reconnect')\n const that = this\n const f = function () {\n if (opts) {\n that.options.incomingStore = opts.incomingStore\n that.options.outgoingStore = opts.outgoingStore\n } else {\n that.options.incomingStore = null\n that.options.outgoingStore = null\n }\n that.incomingStore = that.options.incomingStore || new Store()\n that.outgoingStore = that.options.outgoingStore || new Store()\n that.disconnecting = false\n that.disconnected = false\n that._deferredReconnect = null\n that._reconnect()\n }\n\n if (this.disconnecting && !this.disconnected) {\n this._deferredReconnect = f\n } else {\n f()\n }\n return this\n}\n\n/**\n * _reconnect - implement reconnection\n * @api privateish\n */\nMqttClient.prototype._reconnect = function () {\n debug('_reconnect: emitting reconnect to client')\n this.emit('reconnect')\n if (this.connected) {\n this.end(() => { this._setupStream() })\n debug('client already connected. disconnecting first.')\n } else {\n debug('_reconnect: calling _setupStream')\n this._setupStream()\n }\n}\n\n/**\n * _setupReconnect - setup reconnect timer\n */\nMqttClient.prototype._setupReconnect = function () {\n const that = this\n\n if (!that.disconnecting && !that.reconnectTimer && (that.options.reconnectPeriod > 0)) {\n if (!this.reconnecting) {\n debug('_setupReconnect :: emit `offline` state')\n this.emit('offline')\n debug('_setupReconnect :: set `reconnecting` to `true`')\n this.reconnecting = true\n }\n debug('_setupReconnect :: setting reconnectTimer for %d ms', that.options.reconnectPeriod)\n that.reconnectTimer = setInterval(function () {\n debug('reconnectTimer :: reconnect triggered!')\n that._reconnect()\n }, that.options.reconnectPeriod)\n } else {\n debug('_setupReconnect :: doing nothing...')\n }\n}\n\n/**\n * _clearReconnect - clear the reconnect timer\n */\nMqttClient.prototype._clearReconnect = function () {\n debug('_clearReconnect : clearing reconnect timer')\n if (this.reconnectTimer) {\n clearInterval(this.reconnectTimer)\n this.reconnectTimer = null\n }\n}\n\n/**\n * _cleanUp - clean up on connection end\n * @api private\n */\nMqttClient.prototype._cleanUp = function (forced, done) {\n const opts = arguments[2]\n if (done) {\n debug('_cleanUp :: done callback provided for on stream close')\n this.stream.on('close', done)\n }\n\n debug('_cleanUp :: forced? %s', forced)\n if (forced) {\n if ((this.options.reconnectPeriod === 0) && this.options.clean) {\n flush(this.outgoing)\n }\n debug('_cleanUp :: (%s) :: destroying stream', this.options.clientId)\n this.stream.destroy()\n } else {\n const packet = xtend({ cmd: 'disconnect' }, opts)\n debug('_cleanUp :: (%s) :: call _sendPacket with disconnect packet', this.options.clientId)\n this._sendPacket(\n packet,\n setImmediate.bind(\n null,\n this.stream.end.bind(this.stream)\n )\n )\n }\n\n if (!this.disconnecting) {\n debug('_cleanUp :: client not disconnecting. Clearing and resetting reconnect.')\n this._clearReconnect()\n this._setupReconnect()\n }\n\n if (this.pingTimer !== null) {\n debug('_cleanUp :: clearing pingTimer')\n this.pingTimer.clear()\n this.pingTimer = null\n }\n\n if (done && !this.connected) {\n debug('_cleanUp :: (%s) :: removing stream `done` callback `close` listener', this.options.clientId)\n this.stream.removeListener('close', done)\n done()\n }\n}\n\n/**\n * _sendPacket - send or queue a packet\n * @param {Object} packet - packet options\n * @param {Function} cb - callback when the packet is sent\n * @param {Function} cbStorePut - called when message is put into outgoingStore\n * @api private\n */\nMqttClient.prototype._sendPacket = function (packet, cb, cbStorePut) {\n debug('_sendPacket :: (%s) :: start', this.options.clientId)\n cbStorePut = cbStorePut || nop\n cb = cb || nop\n\n const err = applyTopicAlias(this, packet)\n if (err) {\n cb(err)\n return\n }\n\n if (!this.connected) {\n // allow auth packets to be sent while authenticating with the broker (mqtt5 enhanced auth)\n if (packet.cmd === 'auth') {\n this._shiftPingInterval()\n sendPacket(this, packet, cb)\n return\n }\n\n debug('_sendPacket :: client not connected. Storing packet offline.')\n this._storePacket(packet, cb, cbStorePut)\n return\n }\n\n // When sending a packet, reschedule the ping timer\n this._shiftPingInterval()\n\n switch (packet.cmd) {\n case 'publish':\n break\n case 'pubrel':\n storeAndSend(this, packet, cb, cbStorePut)\n return\n default:\n sendPacket(this, packet, cb)\n return\n }\n\n switch (packet.qos) {\n case 2:\n case 1:\n storeAndSend(this, packet, cb, cbStorePut)\n break\n /**\n * no need of case here since it will be caught by default\n * and jshint comply that before default it must be a break\n * anyway it will result in -1 evaluation\n */\n case 0:\n /* falls through */\n default:\n sendPacket(this, packet, cb)\n break\n }\n debug('_sendPacket :: (%s) :: end', this.options.clientId)\n}\n\n/**\n * _storePacket - queue a packet\n * @param {Object} packet - packet options\n * @param {Function} cb - callback when the packet is sent\n * @param {Function} cbStorePut - called when message is put into outgoingStore\n * @api private\n */\nMqttClient.prototype._storePacket = function (packet, cb, cbStorePut) {\n debug('_storePacket :: packet: %o', packet)\n debug('_storePacket :: cb? %s', !!cb)\n cbStorePut = cbStorePut || nop\n\n let storePacket = packet\n if (storePacket.cmd === 'publish') {\n // The original packet is for sending.\n // The cloned storePacket is for storing to resend on reconnect.\n // Topic Alias must not be used after disconnected.\n storePacket = clone(packet)\n const err = removeTopicAliasAndRecoverTopicName(this, storePacket)\n if (err) {\n return cb && cb(err)\n }\n }\n // check that the packet is not a qos of 0, or that the command is not a publish\n if (((storePacket.qos || 0) === 0 && this.queueQoSZero) || storePacket.cmd !== 'publish') {\n this.queue.push({ packet: storePacket, cb: cb })\n } else if (storePacket.qos > 0) {\n cb = this.outgoing[storePacket.messageId] ? this.outgoing[storePacket.messageId].cb : null\n this.outgoingStore.put(storePacket, function (err) {\n if (err) {\n return cb && cb(err)\n }\n cbStorePut()\n })\n } else if (cb) {\n cb(new Error('No connection to broker'))\n }\n}\n\n/**\n * _setupPingTimer - setup the ping timer\n *\n * @api private\n */\nMqttClient.prototype._setupPingTimer = function () {\n debug('_setupPingTimer :: keepalive %d (seconds)', this.options.keepalive)\n const that = this\n\n if (!this.pingTimer && this.options.keepalive) {\n this.pingResp = true\n this.pingTimer = reInterval(function () {\n that._checkPing()\n }, this.options.keepalive * 1000)\n }\n}\n\n/**\n * _shiftPingInterval - reschedule the ping interval\n *\n * @api private\n */\nMqttClient.prototype._shiftPingInterval = function () {\n if (this.pingTimer && this.options.keepalive && this.options.reschedulePings) {\n this.pingTimer.reschedule(this.options.keepalive * 1000)\n }\n}\n/**\n * _checkPing - check if a pingresp has come back, and ping the server again\n *\n * @api private\n */\nMqttClient.prototype._checkPing = function () {\n debug('_checkPing :: checking ping...')\n if (this.pingResp) {\n debug('_checkPing :: ping response received. Clearing flag and sending `pingreq`')\n this.pingResp = false\n this._sendPacket({ cmd: 'pingreq' })\n } else {\n // do a forced cleanup since socket will be in bad shape\n debug('_checkPing :: calling _cleanUp with force true')\n this._cleanUp(true)\n }\n}\n\n/**\n * _handlePingresp - handle a pingresp\n *\n * @api private\n */\nMqttClient.prototype._handlePingresp = function () {\n this.pingResp = true\n}\n\n/**\n * _handleConnack\n *\n * @param {Object} packet\n * @api private\n */\nMqttClient.prototype._handleConnack = function (packet) {\n debug('_handleConnack')\n const options = this.options\n const version = options.protocolVersion\n const rc = version === 5 ? packet.reasonCode : packet.returnCode\n\n clearTimeout(this.connackTimer)\n delete this.topicAliasSend\n\n if (packet.properties) {\n if (packet.properties.topicAliasMaximum) {\n if (packet.properties.topicAliasMaximum > 0xffff) {\n this.emit('error', new Error('topicAliasMaximum from broker is out of range'))\n return\n }\n if (packet.properties.topicAliasMaximum > 0) {\n this.topicAliasSend = new TopicAliasSend(packet.properties.topicAliasMaximum)\n }\n }\n if (packet.properties.serverKeepAlive && options.keepalive) {\n options.keepalive = packet.properties.serverKeepAlive\n this._shiftPingInterval()\n }\n if (packet.properties.maximumPacketSize) {\n if (!options.properties) { options.properties = {} }\n options.properties.maximumPacketSize = packet.properties.maximumPacketSize\n }\n }\n\n if (rc === 0) {\n this.reconnecting = false\n this._onConnect(packet)\n } else if (rc > 0) {\n const err = new Error('Connection refused: ' + errors[rc])\n err.code = rc\n this.emit('error', err)\n }\n}\n\nMqttClient.prototype._handleAuth = function (packet) {\n const options = this.options\n const version = options.protocolVersion\n const rc = version === 5 ? packet.reasonCode : packet.returnCode\n\n if (version !== 5) {\n const err = new Error('Protocol error: Auth packets are only supported in MQTT 5. Your version:' + version)\n err.code = rc\n this.emit('error', err)\n return\n }\n\n const that = this\n this.handleAuth(packet, function (err, packet) {\n if (err) {\n that.emit('error', err)\n return\n }\n\n if (rc === 24) {\n that.reconnecting = false\n that._sendPacket(packet)\n } else {\n const error = new Error('Connection refused: ' + errors[rc])\n err.code = rc\n that.emit('error', error)\n }\n })\n}\n\n/**\n * @param packet the packet received by the broker\n * @return the auth packet to be returned to the broker\n * @api public\n */\nMqttClient.prototype.handleAuth = function (packet, callback) {\n callback()\n}\n\n/**\n * _handlePublish\n *\n * @param {Object} packet\n * @api private\n */\n/*\nthose late 2 case should be rewrite to comply with coding style:\n\ncase 1:\ncase 0:\n // do not wait sending a puback\n // no callback passed\n if (1 === qos) {\n this._sendPacket({\n cmd: 'puback',\n messageId: messageId\n });\n }\n // emit the message event for both qos 1 and 0\n this.emit('message', topic, message, packet);\n this.handleMessage(packet, done);\n break;\ndefault:\n // do nothing but every switch mus have a default\n // log or throw an error about unknown qos\n break;\n\nfor now i just suppressed the warnings\n*/\nMqttClient.prototype._handlePublish = function (packet, done) {\n debug('_handlePublish: packet %o', packet)\n done = typeof done !== 'undefined' ? done : nop\n let topic = packet.topic.toString()\n const message = packet.payload\n const qos = packet.qos\n const messageId = packet.messageId\n const that = this\n const options = this.options\n const validReasonCodes = [0, 16, 128, 131, 135, 144, 145, 151, 153]\n if (this.options.protocolVersion === 5) {\n let alias\n if (packet.properties) {\n alias = packet.properties.topicAlias\n }\n if (typeof alias !== 'undefined') {\n if (topic.length === 0) {\n if (alias > 0 && alias <= 0xffff) {\n const gotTopic = this.topicAliasRecv.getTopicByAlias(alias)\n if (gotTopic) {\n topic = gotTopic\n debug('_handlePublish :: topic complemented by alias. topic: %s - alias: %d', topic, alias)\n } else {\n debug('_handlePublish :: unregistered topic alias. alias: %d', alias)\n this.emit('error', new Error('Received unregistered Topic Alias'))\n return\n }\n } else {\n debug('_handlePublish :: topic alias out of range. alias: %d', alias)\n this.emit('error', new Error('Received Topic Alias is out of range'))\n return\n }\n } else {\n if (this.topicAliasRecv.put(topic, alias)) {\n debug('_handlePublish :: registered topic: %s - alias: %d', topic, alias)\n } else {\n debug('_handlePublish :: topic alias out of range. alias: %d', alias)\n this.emit('error', new Error('Received Topic Alias is out of range'))\n return\n }\n }\n }\n }\n debug('_handlePublish: qos %d', qos)\n switch (qos) {\n case 2: {\n options.customHandleAcks(topic, message, packet, function (error, code) {\n if (!(error instanceof Error)) {\n code = error\n error = null\n }\n if (error) { return that.emit('error', error) }\n if (validReasonCodes.indexOf(code) === -1) { return that.emit('error', new Error('Wrong reason code for pubrec')) }\n if (code) {\n that._sendPacket({ cmd: 'pubrec', messageId: messageId, reasonCode: code }, done)\n } else {\n that.incomingStore.put(packet, function () {\n that._sendPacket({ cmd: 'pubrec', messageId: messageId }, done)\n })\n }\n })\n break\n }\n case 1: {\n // emit the message event\n options.customHandleAcks(topic, message, packet, function (error, code) {\n if (!(error instanceof Error)) {\n code = error\n error = null\n }\n if (error) { return that.emit('error', error) }\n if (validReasonCodes.indexOf(code) === -1) { return that.emit('error', new Error('Wrong reason code for puback')) }\n if (!code) { that.emit('message', topic, message, packet) }\n that.handleMessage(packet, function (err) {\n if (err) {\n return done && done(err)\n }\n that._sendPacket({ cmd: 'puback', messageId: messageId, reasonCode: code }, done)\n })\n })\n break\n }\n case 0:\n // emit the message event\n this.emit('message', topic, message, packet)\n this.handleMessage(packet, done)\n break\n default:\n // do nothing\n debug('_handlePublish: unknown QoS. Doing nothing.')\n // log or throw an error about unknown qos\n break\n }\n}\n\n/**\n * Handle messages with backpressure support, one at a time.\n * Override at will.\n *\n * @param Packet packet the packet\n * @param Function callback call when finished\n * @api public\n */\nMqttClient.prototype.handleMessage = function (packet, callback) {\n callback()\n}\n\n/**\n * _handleAck\n *\n * @param {Object} packet\n * @api private\n */\n\nMqttClient.prototype._handleAck = function (packet) {\n /* eslint no-fallthrough: \"off\" */\n const messageId = packet.messageId\n const type = packet.cmd\n let response = null\n const cb = this.outgoing[messageId] ? this.outgoing[messageId].cb : null\n const that = this\n let err\n\n // Checking `!cb` happens to work, but it's not technically \"correct\".\n //\n // Why? This code assumes that \"no callback\" is the same as that \"we're not\n // waiting for responses\" (puback, pubrec, pubcomp, suback, or unsuback).\n //\n // It would be better to check `if (!this.outgoing[messageId])` here, but\n // there's no reason to change it and risk (another) regression.\n //\n // The only reason this code works is becaues code in MqttClient.publish,\n // MqttClinet.subscribe, and MqttClient.unsubscribe ensures that we will\n // have a callback even if the user doesn't pass one in.)\n if (!cb) {\n debug('_handleAck :: Server sent an ack in error. Ignoring.')\n // Server sent an ack in error, ignore it.\n return\n }\n\n // Process\n debug('_handleAck :: packet type', type)\n switch (type) {\n case 'pubcomp':\n // same thing as puback for QoS 2\n case 'puback': {\n const pubackRC = packet.reasonCode\n // Callback - we're done\n if (pubackRC && pubackRC > 0 && pubackRC !== 16) {\n err = new Error('Publish error: ' + errors[pubackRC])\n err.code = pubackRC\n cb(err, packet)\n }\n delete this.outgoing[messageId]\n this.outgoingStore.del(packet, cb)\n this.messageIdProvider.deallocate(messageId)\n this._invokeStoreProcessingQueue()\n break\n }\n case 'pubrec': {\n response = {\n cmd: 'pubrel',\n qos: 2,\n messageId: messageId\n }\n const pubrecRC = packet.reasonCode\n\n if (pubrecRC && pubrecRC > 0 && pubrecRC !== 16) {\n err = new Error('Publish error: ' + errors[pubrecRC])\n err.code = pubrecRC\n cb(err, packet)\n } else {\n this._sendPacket(response)\n }\n break\n }\n case 'suback': {\n delete this.outgoing[messageId]\n this.messageIdProvider.deallocate(messageId)\n for (let grantedI = 0; grantedI < packet.granted.length; grantedI++) {\n if ((packet.granted[grantedI] & 0x80) !== 0) {\n // suback with Failure status\n const topics = this.messageIdToTopic[messageId]\n if (topics) {\n topics.forEach(function (topic) {\n delete that._resubscribeTopics[topic]\n })\n }\n }\n }\n this._invokeStoreProcessingQueue()\n cb(null, packet)\n break\n }\n case 'unsuback': {\n delete this.outgoing[messageId]\n this.messageIdProvider.deallocate(messageId)\n this._invokeStoreProcessingQueue()\n cb(null)\n break\n }\n default:\n that.emit('error', new Error('unrecognized packet type'))\n }\n\n if (this.disconnecting &&\n Object.keys(this.outgoing).length === 0) {\n this.emit('outgoingEmpty')\n }\n}\n\n/**\n * _handlePubrel\n *\n * @param {Object} packet\n * @api private\n */\nMqttClient.prototype._handlePubrel = function (packet, callback) {\n debug('handling pubrel packet')\n callback = typeof callback !== 'undefined' ? callback : nop\n const messageId = packet.messageId\n const that = this\n\n const comp = { cmd: 'pubcomp', messageId: messageId }\n\n that.incomingStore.get(packet, function (err, pub) {\n if (!err) {\n that.emit('message', pub.topic, pub.payload, pub)\n that.handleMessage(pub, function (err) {\n if (err) {\n return callback(err)\n }\n that.incomingStore.del(pub, nop)\n that._sendPacket(comp, callback)\n })\n } else {\n that._sendPacket(comp, callback)\n }\n })\n}\n\n/**\n * _handleDisconnect\n *\n * @param {Object} packet\n * @api private\n */\nMqttClient.prototype._handleDisconnect = function (packet) {\n this.emit('disconnect', packet)\n}\n\n/**\n * _nextId\n * @return unsigned int\n */\nMqttClient.prototype._nextId = function () {\n return this.messageIdProvider.allocate()\n}\n\n/**\n * getLastMessageId\n * @return unsigned int\n */\nMqttClient.prototype.getLastMessageId = function () {\n return this.messageIdProvider.getLastAllocated()\n}\n\n/**\n * _resubscribe\n * @api private\n */\nMqttClient.prototype._resubscribe = function () {\n debug('_resubscribe')\n const _resubscribeTopicsKeys = Object.keys(this._resubscribeTopics)\n if (!this._firstConnection &&\n (this.options.clean || (this.options.protocolVersion === 5 && !this.connackPacket.sessionPresent)) &&\n _resubscribeTopicsKeys.length > 0) {\n if (this.options.resubscribe) {\n if (this.options.protocolVersion === 5) {\n debug('_resubscribe: protocolVersion 5')\n for (let topicI = 0; topicI < _resubscribeTopicsKeys.length; topicI++) {\n const resubscribeTopic = {}\n resubscribeTopic[_resubscribeTopicsKeys[topicI]] = this._resubscribeTopics[_resubscribeTopicsKeys[topicI]]\n resubscribeTopic.resubscribe = true\n this.subscribe(resubscribeTopic, { properties: resubscribeTopic[_resubscribeTopicsKeys[topicI]].properties })\n }\n } else {\n this._resubscribeTopics.resubscribe = true\n this.subscribe(this._resubscribeTopics)\n }\n } else {\n this._resubscribeTopics = {}\n }\n }\n\n this._firstConnection = false\n}\n\n/**\n * _onConnect\n *\n * @api private\n */\nMqttClient.prototype._onConnect = function (packet) {\n if (this.disconnected) {\n this.emit('connect', packet)\n return\n }\n\n const that = this\n\n this.connackPacket = packet\n this.messageIdProvider.clear()\n this._setupPingTimer()\n\n this.connected = true\n\n function startStreamProcess () {\n let outStore = that.outgoingStore.createStream()\n\n function clearStoreProcessing () {\n that._storeProcessing = false\n that._packetIdsDuringStoreProcessing = {}\n }\n\n that.once('close', remove)\n outStore.on('error', function (err) {\n clearStoreProcessing()\n that._flushStoreProcessingQueue()\n that.removeListener('close', remove)\n that.emit('error', err)\n })\n\n function remove () {\n outStore.destroy()\n outStore = null\n that._flushStoreProcessingQueue()\n clearStoreProcessing()\n }\n\n function storeDeliver () {\n // edge case, we wrapped this twice\n if (!outStore) {\n return\n }\n that._storeProcessing = true\n\n const packet = outStore.read(1)\n\n let cb\n\n if (!packet) {\n // read when data is available in the future\n outStore.once('readable', storeDeliver)\n return\n }\n\n // Skip already processed store packets\n if (that._packetIdsDuringStoreProcessing[packet.messageId]) {\n storeDeliver()\n return\n }\n\n // Avoid unnecessary stream read operations when disconnected\n if (!that.disconnecting && !that.reconnectTimer) {\n cb = that.outgoing[packet.messageId] ? that.outgoing[packet.messageId].cb : null\n that.outgoing[packet.messageId] = {\n volatile: false,\n cb: function (err, status) {\n // Ensure that the original callback passed in to publish gets invoked\n if (cb) {\n cb(err, status)\n }\n\n storeDeliver()\n }\n }\n that._packetIdsDuringStoreProcessing[packet.messageId] = true\n if (that.messageIdProvider.register(packet.messageId)) {\n that._sendPacket(packet)\n } else {\n debug('messageId: %d has already used.', packet.messageId)\n }\n } else if (outStore.destroy) {\n outStore.destroy()\n }\n }\n\n outStore.on('end', function () {\n let allProcessed = true\n for (const id in that._packetIdsDuringStoreProcessing) {\n if (!that._packetIdsDuringStoreProcessing[id]) {\n allProcessed = false\n break\n }\n }\n if (allProcessed) {\n clearStoreProcessing()\n that.removeListener('close', remove)\n that._invokeAllStoreProcessingQueue()\n that.emit('connect', packet)\n } else {\n startStreamProcess()\n }\n })\n storeDeliver()\n }\n // start flowing\n startStreamProcess()\n}\n\nMqttClient.prototype._invokeStoreProcessingQueue = function () {\n if (this._storeProcessingQueue.length > 0) {\n const f = this._storeProcessingQueue[0]\n if (f && f.invoke()) {\n this._storeProcessingQueue.shift()\n return true\n }\n }\n return false\n}\n\nMqttClient.prototype._invokeAllStoreProcessingQueue = function () {\n while (this._invokeStoreProcessingQueue()) { /* empty */ }\n}\n\nMqttClient.prototype._flushStoreProcessingQueue = function () {\n for (const f of this._storeProcessingQueue) {\n if (f.cbStorePut) f.cbStorePut(new Error('Connection closed'))\n if (f.callback) f.callback(new Error('Connection closed'))\n }\n this._storeProcessingQueue.splice(0)\n}\n\nmodule.exports = MqttClient\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Transform = require('readable-stream').Transform\nconst duplexify = require('duplexify')\n\n/* global FileReader */\nlet my\nlet proxy\nlet stream\nlet isInitialized = false\n\nfunction buildProxy () {\n const proxy = new Transform()\n proxy._write = function (chunk, encoding, next) {\n my.sendSocketMessage({\n data: chunk.buffer,\n success: function () {\n next()\n },\n fail: function () {\n next(new Error())\n }\n })\n }\n proxy._flush = function socketEnd (done) {\n my.closeSocket({\n success: function () {\n done()\n }\n })\n }\n\n return proxy\n}\n\nfunction setDefaultOpts (opts) {\n if (!opts.hostname) {\n opts.hostname = 'localhost'\n }\n if (!opts.path) {\n opts.path = '/'\n }\n\n if (!opts.wsOptions) {\n opts.wsOptions = {}\n }\n}\n\nfunction buildUrl (opts, client) {\n const protocol = opts.protocol === 'alis' ? 'wss' : 'ws'\n let url = protocol + '://' + opts.hostname + opts.path\n if (opts.port && opts.port !== 80 && opts.port !== 443) {\n url = protocol + '://' + opts.hostname + ':' + opts.port + opts.path\n }\n if (typeof (opts.transformWsUrl) === 'function') {\n url = opts.transformWsUrl(url, opts, client)\n }\n return url\n}\n\nfunction bindEventHandler () {\n if (isInitialized) return\n\n isInitialized = true\n\n my.onSocketOpen(function () {\n stream.setReadable(proxy)\n stream.setWritable(proxy)\n stream.emit('connect')\n })\n\n my.onSocketMessage(function (res) {\n if (typeof res.data === 'string') {\n const buffer = Buffer.from(res.data, 'base64')\n proxy.push(buffer)\n } else {\n const reader = new FileReader()\n reader.addEventListener('load', function () {\n let data = reader.result\n\n if (data instanceof ArrayBuffer) data = Buffer.from(data)\n else data = Buffer.from(data, 'utf8')\n proxy.push(data)\n })\n reader.readAsArrayBuffer(res.data)\n }\n })\n\n my.onSocketClose(function () {\n stream.end()\n stream.destroy()\n })\n\n my.onSocketError(function (res) {\n stream.destroy(res)\n })\n}\n\nfunction buildStream (client, opts) {\n opts.hostname = opts.hostname || opts.host\n\n if (!opts.hostname) {\n throw new Error('Could not determine host. Specify host manually.')\n }\n\n const websocketSubProtocol =\n (opts.protocolId === 'MQIsdp') && (opts.protocolVersion === 3)\n ? 'mqttv3.1'\n : 'mqtt'\n\n setDefaultOpts(opts)\n\n const url = buildUrl(opts, client)\n my = opts.my\n my.connectSocket({\n url: url,\n protocols: websocketSubProtocol\n })\n\n proxy = buildProxy()\n stream = duplexify.obj()\n\n bindEventHandler()\n\n return stream\n}\n\nmodule.exports = buildStream\n","'use strict'\n\nconst MqttClient = require('../client')\nconst Store = require('../store')\nconst url = require('url')\nconst xtend = require('xtend')\nconst debug = require('debug')('mqttjs')\n\nconst protocols = {}\n\n// eslint-disable-next-line camelcase\nif ((typeof process !== 'undefined' && process.title !== 'browser') || typeof __webpack_require__ !== 'function') {\n protocols.mqtt = require('./tcp')\n protocols.tcp = require('./tcp')\n protocols.ssl = require('./tls')\n protocols.tls = require('./tls')\n protocols.mqtts = require('./tls')\n} else {\n protocols.wx = require('./wx')\n protocols.wxs = require('./wx')\n\n protocols.ali = require('./ali')\n protocols.alis = require('./ali')\n}\n\nprotocols.ws = require('./ws')\nprotocols.wss = require('./ws')\n\n/**\n * Parse the auth attribute and merge username and password in the options object.\n *\n * @param {Object} [opts] option object\n */\nfunction parseAuthOptions (opts) {\n let matches\n if (opts.auth) {\n matches = opts.auth.match(/^(.+):(.+)$/)\n if (matches) {\n opts.username = matches[1]\n opts.password = matches[2]\n } else {\n opts.username = opts.auth\n }\n }\n}\n\n/**\n * connect - connect to an MQTT broker.\n *\n * @param {String} [brokerUrl] - url of the broker, optional\n * @param {Object} opts - see MqttClient#constructor\n */\nfunction connect (brokerUrl, opts) {\n debug('connecting to an MQTT broker...')\n if ((typeof brokerUrl === 'object') && !opts) {\n opts = brokerUrl\n brokerUrl = null\n }\n\n opts = opts || {}\n\n if (brokerUrl) {\n // eslint-disable-next-line\n const parsed = url.parse(brokerUrl, true)\n if (parsed.port != null) {\n parsed.port = Number(parsed.port)\n }\n\n opts = xtend(parsed, opts)\n\n if (opts.protocol === null) {\n throw new Error('Missing protocol')\n }\n\n opts.protocol = opts.protocol.replace(/:$/, '')\n }\n\n // merge in the auth options if supplied\n parseAuthOptions(opts)\n\n // support clientId passed in the query string of the url\n if (opts.query && typeof opts.query.clientId === 'string') {\n opts.clientId = opts.query.clientId\n }\n\n if (opts.cert && opts.key) {\n if (opts.protocol) {\n if (['mqtts', 'wss', 'wxs', 'alis'].indexOf(opts.protocol) === -1) {\n switch (opts.protocol) {\n case 'mqtt':\n opts.protocol = 'mqtts'\n break\n case 'ws':\n opts.protocol = 'wss'\n break\n case 'wx':\n opts.protocol = 'wxs'\n break\n case 'ali':\n opts.protocol = 'alis'\n break\n default:\n throw new Error('Unknown protocol for secure connection: \"' + opts.protocol + '\"!')\n }\n }\n } else {\n // A cert and key was provided, however no protocol was specified, so we will throw an error.\n throw new Error('Missing secure protocol key')\n }\n }\n\n if (!protocols[opts.protocol]) {\n const isSecure = ['mqtts', 'wss'].indexOf(opts.protocol) !== -1\n opts.protocol = [\n 'mqtt',\n 'mqtts',\n 'ws',\n 'wss',\n 'wx',\n 'wxs',\n 'ali',\n 'alis'\n ].filter(function (key, index) {\n if (isSecure && index % 2 === 0) {\n // Skip insecure protocols when requesting a secure one.\n return false\n }\n return (typeof protocols[key] === 'function')\n })[0]\n }\n\n if (opts.clean === false && !opts.clientId) {\n throw new Error('Missing clientId for unclean clients')\n }\n\n if (opts.protocol) {\n opts.defaultProtocol = opts.protocol\n }\n\n function wrapper (client) {\n if (opts.servers) {\n if (!client._reconnectCount || client._reconnectCount === opts.servers.length) {\n client._reconnectCount = 0\n }\n\n opts.host = opts.servers[client._reconnectCount].host\n opts.port = opts.servers[client._reconnectCount].port\n opts.protocol = (!opts.servers[client._reconnectCount].protocol ? opts.defaultProtocol : opts.servers[client._reconnectCount].protocol)\n opts.hostname = opts.host\n\n client._reconnectCount++\n }\n\n debug('calling streambuilder for', opts.protocol)\n return protocols[opts.protocol](client, opts)\n }\n const client = new MqttClient(wrapper, opts)\n client.on('error', function () { /* Automatically set up client error handling */ })\n return client\n}\n\nmodule.exports = connect\nmodule.exports.connect = connect\nmodule.exports.MqttClient = MqttClient\nmodule.exports.Store = Store\n","'use strict'\nconst net = require('net')\nconst debug = require('debug')('mqttjs:tcp')\n\n/*\n variables port and host can be removed since\n you have all required information in opts object\n*/\nfunction streamBuilder (client, opts) {\n opts.port = opts.port || 1883\n opts.hostname = opts.hostname || opts.host || 'localhost'\n\n const port = opts.port\n const host = opts.hostname\n\n debug('port %d and host %s', port, host)\n return net.createConnection(port, host)\n}\n\nmodule.exports = streamBuilder\n","'use strict'\nconst tls = require('tls')\nconst net = require('net')\nconst debug = require('debug')('mqttjs:tls')\n\nfunction buildBuilder (mqttClient, opts) {\n opts.port = opts.port || 8883\n opts.host = opts.hostname || opts.host || 'localhost'\n\n if (net.isIP(opts.host) === 0) {\n opts.servername = opts.host\n }\n\n opts.rejectUnauthorized = opts.rejectUnauthorized !== false\n\n delete opts.path\n\n debug('port %d host %s rejectUnauthorized %b', opts.port, opts.host, opts.rejectUnauthorized)\n\n const connection = tls.connect(opts)\n /* eslint no-use-before-define: [2, \"nofunc\"] */\n connection.on('secureConnect', function () {\n if (opts.rejectUnauthorized && !connection.authorized) {\n connection.emit('error', new Error('TLS not authorized'))\n } else {\n connection.removeListener('error', handleTLSerrors)\n }\n })\n\n function handleTLSerrors (err) {\n // How can I get verify this error is a tls error?\n if (opts.rejectUnauthorized) {\n mqttClient.emit('error', err)\n }\n\n // close this connection to match the behaviour of net\n // otherwise all we get is an error from the connection\n // and close event doesn't fire. This is a work around\n // to enable the reconnect code to work the same as with\n // net.createConnection\n connection.end()\n }\n\n connection.on('error', handleTLSerrors)\n return connection\n}\n\nmodule.exports = buildBuilder\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst WS = require('ws')\nconst debug = require('debug')('mqttjs:ws')\nconst duplexify = require('duplexify')\nconst Transform = require('readable-stream').Transform\n\nconst WSS_OPTIONS = [\n 'rejectUnauthorized',\n 'ca',\n 'cert',\n 'key',\n 'pfx',\n 'passphrase'\n]\n// eslint-disable-next-line camelcase\nconst IS_BROWSER = (typeof process !== 'undefined' && process.title === 'browser') || typeof __webpack_require__ === 'function'\nfunction buildUrl (opts, client) {\n let url = opts.protocol + '://' + opts.hostname + ':' + opts.port + opts.path\n if (typeof (opts.transformWsUrl) === 'function') {\n url = opts.transformWsUrl(url, opts, client)\n }\n return url\n}\n\nfunction setDefaultOpts (opts) {\n const options = opts\n if (!opts.hostname) {\n options.hostname = 'localhost'\n }\n if (!opts.port) {\n if (opts.protocol === 'wss') {\n options.port = 443\n } else {\n options.port = 80\n }\n }\n if (!opts.path) {\n options.path = '/'\n }\n\n if (!opts.wsOptions) {\n options.wsOptions = {}\n }\n if (!IS_BROWSER && opts.protocol === 'wss') {\n // Add cert/key/ca etc options\n WSS_OPTIONS.forEach(function (prop) {\n if (Object.prototype.hasOwnProperty.call(opts, prop) && !Object.prototype.hasOwnProperty.call(opts.wsOptions, prop)) {\n options.wsOptions[prop] = opts[prop]\n }\n })\n }\n\n return options\n}\n\nfunction setDefaultBrowserOpts (opts) {\n const options = setDefaultOpts(opts)\n\n if (!options.hostname) {\n options.hostname = options.host\n }\n\n if (!options.hostname) {\n // Throwing an error in a Web Worker if no `hostname` is given, because we\n // can not determine the `hostname` automatically. If connecting to\n // localhost, please supply the `hostname` as an argument.\n if (typeof (document) === 'undefined') {\n throw new Error('Could not determine host. Specify host manually.')\n }\n const parsed = new URL(document.URL)\n options.hostname = parsed.hostname\n\n if (!options.port) {\n options.port = parsed.port\n }\n }\n\n // objectMode should be defined for logic\n if (options.objectMode === undefined) {\n options.objectMode = !(options.binary === true || options.binary === undefined)\n }\n\n return options\n}\n\nfunction createWebSocket (client, url, opts) {\n debug('createWebSocket')\n debug('protocol: ' + opts.protocolId + ' ' + opts.protocolVersion)\n const websocketSubProtocol =\n (opts.protocolId === 'MQIsdp') && (opts.protocolVersion === 3)\n ? 'mqttv3.1'\n : 'mqtt'\n\n debug('creating new Websocket for url: ' + url + ' and protocol: ' + websocketSubProtocol)\n const socket = new WS(url, [websocketSubProtocol], opts.wsOptions)\n return socket\n}\n\nfunction createBrowserWebSocket (client, opts) {\n const websocketSubProtocol =\n (opts.protocolId === 'MQIsdp') && (opts.protocolVersion === 3)\n ? 'mqttv3.1'\n : 'mqtt'\n\n const url = buildUrl(opts, client)\n /* global WebSocket */\n const socket = new WebSocket(url, [websocketSubProtocol])\n socket.binaryType = 'arraybuffer'\n return socket\n}\n\nfunction streamBuilder (client, opts) {\n debug('streamBuilder')\n const options = setDefaultOpts(opts)\n const url = buildUrl(options, client)\n const socket = createWebSocket(client, url, options)\n const webSocketStream = WS.createWebSocketStream(socket, options.wsOptions)\n webSocketStream.url = url\n socket.on('close', () => { webSocketStream.destroy() })\n return webSocketStream\n}\n\nfunction browserStreamBuilder (client, opts) {\n debug('browserStreamBuilder')\n let stream\n const options = setDefaultBrowserOpts(opts)\n // sets the maximum socket buffer size before throttling\n const bufferSize = options.browserBufferSize || 1024 * 512\n\n const bufferTimeout = opts.browserBufferTimeout || 1000\n\n const coerceToBuffer = !opts.objectMode\n\n const socket = createBrowserWebSocket(client, opts)\n\n const proxy = buildProxy(opts, socketWriteBrowser, socketEndBrowser)\n\n if (!opts.objectMode) {\n proxy._writev = writev\n }\n proxy.on('close', () => { socket.close() })\n\n const eventListenerSupport = (typeof socket.addEventListener !== 'undefined')\n\n // was already open when passed in\n if (socket.readyState === socket.OPEN) {\n stream = proxy\n } else {\n stream = stream = duplexify(undefined, undefined, opts)\n if (!opts.objectMode) {\n stream._writev = writev\n }\n\n if (eventListenerSupport) {\n socket.addEventListener('open', onopen)\n } else {\n socket.onopen = onopen\n }\n }\n\n stream.socket = socket\n\n if (eventListenerSupport) {\n socket.addEventListener('close', onclose)\n socket.addEventListener('error', onerror)\n socket.addEventListener('message', onmessage)\n } else {\n socket.onclose = onclose\n socket.onerror = onerror\n socket.onmessage = onmessage\n }\n\n // methods for browserStreamBuilder\n\n function buildProxy (options, socketWrite, socketEnd) {\n const proxy = new Transform({\n objectModeMode: options.objectMode\n })\n\n proxy._write = socketWrite\n proxy._flush = socketEnd\n\n return proxy\n }\n\n function onopen () {\n stream.setReadable(proxy)\n stream.setWritable(proxy)\n stream.emit('connect')\n }\n\n function onclose () {\n stream.end()\n stream.destroy()\n }\n\n function onerror (err) {\n stream.destroy(err)\n }\n\n function onmessage (event) {\n let data = event.data\n if (data instanceof ArrayBuffer) data = Buffer.from(data)\n else data = Buffer.from(data, 'utf8')\n proxy.push(data)\n }\n\n // this is to be enabled only if objectMode is false\n function writev (chunks, cb) {\n const buffers = new Array(chunks.length)\n for (let i = 0; i < chunks.length; i++) {\n if (typeof chunks[i].chunk === 'string') {\n buffers[i] = Buffer.from(chunks[i], 'utf8')\n } else {\n buffers[i] = chunks[i].chunk\n }\n }\n\n this._write(Buffer.concat(buffers), 'binary', cb)\n }\n\n function socketWriteBrowser (chunk, enc, next) {\n if (socket.bufferedAmount > bufferSize) {\n // throttle data until buffered amount is reduced.\n setTimeout(socketWriteBrowser, bufferTimeout, chunk, enc, next)\n }\n\n if (coerceToBuffer && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, 'utf8')\n }\n\n try {\n socket.send(chunk)\n } catch (err) {\n return next(err)\n }\n\n next()\n }\n\n function socketEndBrowser (done) {\n socket.close()\n done()\n }\n\n // end methods for browserStreamBuilder\n\n return stream\n}\n\nif (IS_BROWSER) {\n module.exports = browserStreamBuilder\n} else {\n module.exports = streamBuilder\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Transform = require('readable-stream').Transform\nconst duplexify = require('duplexify')\n\n/* global wx */\nlet socketTask, proxy, stream\n\nfunction buildProxy () {\n const proxy = new Transform()\n proxy._write = function (chunk, encoding, next) {\n socketTask.send({\n data: chunk.buffer,\n success: function () {\n next()\n },\n fail: function (errMsg) {\n next(new Error(errMsg))\n }\n })\n }\n proxy._flush = function socketEnd (done) {\n socketTask.close({\n success: function () {\n done()\n }\n })\n }\n\n return proxy\n}\n\nfunction setDefaultOpts (opts) {\n if (!opts.hostname) {\n opts.hostname = 'localhost'\n }\n if (!opts.path) {\n opts.path = '/'\n }\n\n if (!opts.wsOptions) {\n opts.wsOptions = {}\n }\n}\n\nfunction buildUrl (opts, client) {\n const protocol = opts.protocol === 'wxs' ? 'wss' : 'ws'\n let url = protocol + '://' + opts.hostname + opts.path\n if (opts.port && opts.port !== 80 && opts.port !== 443) {\n url = protocol + '://' + opts.hostname + ':' + opts.port + opts.path\n }\n if (typeof (opts.transformWsUrl) === 'function') {\n url = opts.transformWsUrl(url, opts, client)\n }\n return url\n}\n\nfunction bindEventHandler () {\n socketTask.onOpen(function () {\n stream.setReadable(proxy)\n stream.setWritable(proxy)\n stream.emit('connect')\n })\n\n socketTask.onMessage(function (res) {\n let data = res.data\n\n if (data instanceof ArrayBuffer) data = Buffer.from(data)\n else data = Buffer.from(data, 'utf8')\n proxy.push(data)\n })\n\n socketTask.onClose(function () {\n stream.end()\n stream.destroy()\n })\n\n socketTask.onError(function (res) {\n stream.destroy(new Error(res.errMsg))\n })\n}\n\nfunction buildStream (client, opts) {\n opts.hostname = opts.hostname || opts.host\n\n if (!opts.hostname) {\n throw new Error('Could not determine host. Specify host manually.')\n }\n\n const websocketSubProtocol =\n (opts.protocolId === 'MQIsdp') && (opts.protocolVersion === 3)\n ? 'mqttv3.1'\n : 'mqtt'\n\n setDefaultOpts(opts)\n\n const url = buildUrl(opts, client)\n socketTask = wx.connectSocket({\n url: url,\n protocols: [websocketSubProtocol]\n })\n\n proxy = buildProxy()\n stream = duplexify.obj()\n stream._destroy = function (err, cb) {\n socketTask.close({\n success: function () {\n cb && cb(err)\n }\n })\n }\n\n const destroyRef = stream.destroy\n stream.destroy = function () {\n stream.destroy = destroyRef\n\n const self = this\n setTimeout(function () {\n socketTask.close({\n fail: function () {\n self._destroy(new Error())\n }\n })\n }, 0)\n }.bind(stream)\n\n bindEventHandler()\n\n return stream\n}\n\nmodule.exports = buildStream\n","'use strict'\n\n/**\n * DefaultMessageAllocator constructor\n * @constructor\n */\nfunction DefaultMessageIdProvider () {\n if (!(this instanceof DefaultMessageIdProvider)) {\n return new DefaultMessageIdProvider()\n }\n\n /**\n * MessageIDs starting with 1\n * ensure that nextId is min. 1, see https://github.com/mqttjs/MQTT.js/issues/810\n */\n this.nextId = Math.max(1, Math.floor(Math.random() * 65535))\n}\n\n/**\n * allocate\n *\n * Get the next messageId.\n * @return unsigned int\n */\nDefaultMessageIdProvider.prototype.allocate = function () {\n // id becomes current state of this.nextId and increments afterwards\n const id = this.nextId++\n // Ensure 16 bit unsigned int (max 65535, nextId got one higher)\n if (this.nextId === 65536) {\n this.nextId = 1\n }\n return id\n}\n\n/**\n * getLastAllocated\n * Get the last allocated messageId.\n * @return unsigned int\n */\nDefaultMessageIdProvider.prototype.getLastAllocated = function () {\n return (this.nextId === 1) ? 65535 : (this.nextId - 1)\n}\n\n/**\n * register\n * Register messageId. If success return true, otherwise return false.\n * @param { unsigned int } - messageId to register,\n * @return boolean\n */\nDefaultMessageIdProvider.prototype.register = function (messageId) {\n return true\n}\n\n/**\n * deallocate\n * Deallocate messageId.\n * @param { unsigned int } - messageId to deallocate,\n */\nDefaultMessageIdProvider.prototype.deallocate = function (messageId) {\n}\n\n/**\n * clear\n * Deallocate all messageIds.\n */\nDefaultMessageIdProvider.prototype.clear = function () {\n}\n\nmodule.exports = DefaultMessageIdProvider\n","'use strict'\n\n/**\n * Module dependencies\n */\nconst xtend = require('xtend')\n\nconst Readable = require('readable-stream').Readable\nconst streamsOpts = { objectMode: true }\nconst defaultStoreOptions = {\n clean: true\n}\n\n/**\n * In-memory implementation of the message store\n * This can actually be saved into files.\n *\n * @param {Object} [options] - store options\n */\nfunction Store (options) {\n if (!(this instanceof Store)) {\n return new Store(options)\n }\n\n this.options = options || {}\n\n // Defaults\n this.options = xtend(defaultStoreOptions, options)\n\n this._inflights = new Map()\n}\n\n/**\n * Adds a packet to the store, a packet is\n * anything that has a messageId property.\n *\n */\nStore.prototype.put = function (packet, cb) {\n this._inflights.set(packet.messageId, packet)\n\n if (cb) {\n cb()\n }\n\n return this\n}\n\n/**\n * Creates a stream with all the packets in the store\n *\n */\nStore.prototype.createStream = function () {\n const stream = new Readable(streamsOpts)\n const values = []\n let destroyed = false\n let i = 0\n\n this._inflights.forEach(function (value, key) {\n values.push(value)\n })\n\n stream._read = function () {\n if (!destroyed && i < values.length) {\n this.push(values[i++])\n } else {\n this.push(null)\n }\n }\n\n stream.destroy = function () {\n if (destroyed) {\n return\n }\n\n const self = this\n\n destroyed = true\n\n setTimeout(function () {\n self.emit('close')\n }, 0)\n }\n\n return stream\n}\n\n/**\n * deletes a packet from the store.\n */\nStore.prototype.del = function (packet, cb) {\n packet = this._inflights.get(packet.messageId)\n if (packet) {\n this._inflights.delete(packet.messageId)\n cb(null, packet)\n } else if (cb) {\n cb(new Error('missing packet'))\n }\n\n return this\n}\n\n/**\n * get a packet from the store.\n */\nStore.prototype.get = function (packet, cb) {\n packet = this._inflights.get(packet.messageId)\n if (packet) {\n cb(null, packet)\n } else if (cb) {\n cb(new Error('missing packet'))\n }\n\n return this\n}\n\n/**\n * Close the store\n */\nStore.prototype.close = function (cb) {\n if (this.options.clean) {\n this._inflights = null\n }\n if (cb) {\n cb()\n }\n}\n\nmodule.exports = Store\n","'use strict'\n\n/**\n * Topic Alias receiving manager\n * This holds alias to topic map\n * @param {Number} [max] - topic alias maximum entries\n */\nfunction TopicAliasRecv (max) {\n if (!(this instanceof TopicAliasRecv)) {\n return new TopicAliasRecv(max)\n }\n this.aliasToTopic = {}\n this.max = max\n}\n\n/**\n * Insert or update topic - alias entry.\n * @param {String} [topic] - topic\n * @param {Number} [alias] - topic alias\n * @returns {Boolean} - if success return true otherwise false\n */\nTopicAliasRecv.prototype.put = function (topic, alias) {\n if (alias === 0 || alias > this.max) {\n return false\n }\n this.aliasToTopic[alias] = topic\n this.length = Object.keys(this.aliasToTopic).length\n return true\n}\n\n/**\n * Get topic by alias\n * @param {String} [topic] - topic\n * @returns {Number} - if mapped topic exists return topic alias, otherwise return undefined\n */\nTopicAliasRecv.prototype.getTopicByAlias = function (alias) {\n return this.aliasToTopic[alias]\n}\n\n/**\n * Clear all entries\n */\nTopicAliasRecv.prototype.clear = function () {\n this.aliasToTopic = {}\n}\n\nmodule.exports = TopicAliasRecv\n","'use strict'\n\n/**\n * Module dependencies\n */\nconst LruMap = require('lru-cache')\nconst NumberAllocator = require('number-allocator').NumberAllocator\n\n/**\n * Topic Alias sending manager\n * This holds both topic to alias and alias to topic map\n * @param {Number} [max] - topic alias maximum entries\n */\nfunction TopicAliasSend (max) {\n if (!(this instanceof TopicAliasSend)) {\n return new TopicAliasSend(max)\n }\n\n if (max > 0) {\n this.aliasToTopic = new LruMap({ max: max })\n this.topicToAlias = {}\n this.numberAllocator = new NumberAllocator(1, max)\n this.max = max\n this.length = 0\n }\n}\n\n/**\n * Insert or update topic - alias entry.\n * @param {String} [topic] - topic\n * @param {Number} [alias] - topic alias\n * @returns {Boolean} - if success return true otherwise false\n */\nTopicAliasSend.prototype.put = function (topic, alias) {\n if (alias === 0 || alias > this.max) {\n return false\n }\n const entry = this.aliasToTopic.get(alias)\n if (entry) {\n delete this.topicToAlias[entry]\n }\n this.aliasToTopic.set(alias, topic)\n this.topicToAlias[topic] = alias\n this.numberAllocator.use(alias)\n this.length = this.aliasToTopic.length\n return true\n}\n\n/**\n * Get topic by alias\n * @param {Number} [alias] - topic alias\n * @returns {String} - if mapped topic exists return topic, otherwise return undefined\n */\nTopicAliasSend.prototype.getTopicByAlias = function (alias) {\n return this.aliasToTopic.get(alias)\n}\n\n/**\n * Get topic by alias\n * @param {String} [topic] - topic\n * @returns {Number} - if mapped topic exists return topic alias, otherwise return undefined\n */\nTopicAliasSend.prototype.getAliasByTopic = function (topic) {\n const alias = this.topicToAlias[topic]\n if (typeof alias !== 'undefined') {\n this.aliasToTopic.get(alias) // LRU update\n }\n return alias\n}\n\n/**\n * Clear all entries\n */\nTopicAliasSend.prototype.clear = function () {\n this.aliasToTopic.reset()\n this.topicToAlias = {}\n this.numberAllocator.clear()\n this.length = 0\n}\n\n/**\n * Get Least Recently Used (LRU) topic alias\n * @returns {Number} - if vacant alias exists then return it, otherwise then return LRU alias\n */\nTopicAliasSend.prototype.getLruAlias = function () {\n const alias = this.numberAllocator.firstVacant()\n if (alias) return alias\n return this.aliasToTopic.keys()[this.aliasToTopic.length - 1]\n}\n\nmodule.exports = TopicAliasSend\n","'use strict'\n\n/**\n * Validate a topic to see if it's valid or not.\n * A topic is valid if it follow below rules:\n * - Rule #1: If any part of the topic is not `+` or `#`, then it must not contain `+` and '#'\n * - Rule #2: Part `#` must be located at the end of the mailbox\n *\n * @param {String} topic - A topic\n * @returns {Boolean} If the topic is valid, returns true. Otherwise, returns false.\n */\nfunction validateTopic (topic) {\n const parts = topic.split('/')\n\n for (let i = 0; i < parts.length; i++) {\n if (parts[i] === '+') {\n continue\n }\n\n if (parts[i] === '#') {\n // for Rule #2\n return i === parts.length - 1\n }\n\n if (parts[i].indexOf('+') !== -1 || parts[i].indexOf('#') !== -1) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Validate an array of topics to see if any of them is valid or not\n * @param {Array} topics - Array of topics\n * @returns {String} If the topics is valid, returns null. Otherwise, returns the invalid one\n */\nfunction validateTopics (topics) {\n if (topics.length === 0) {\n return 'empty_topic_list'\n }\n for (let i = 0; i < topics.length; i++) {\n if (!validateTopic(topics[i])) {\n return topics[i]\n }\n }\n return null\n}\n\nmodule.exports = {\n validateTopics: validateTopics\n}\n","var stream = require('readable-stream')\nvar eos = require('end-of-stream')\nvar inherits = require('inherits')\nvar shift = require('stream-shift')\n\nvar SIGNAL_FLUSH = (Buffer.from && Buffer.from !== Uint8Array.from)\n ? Buffer.from([0])\n : new Buffer([0])\n\nvar onuncork = function(self, fn) {\n if (self._corked) self.once('uncork', fn)\n else fn()\n}\n\nvar autoDestroy = function (self, err) {\n if (self._autoDestroy) self.destroy(err)\n}\n\nvar destroyer = function(self, end) {\n return function(err) {\n if (err) autoDestroy(self, err.message === 'premature close' ? null : err)\n else if (end && !self._ended) self.end()\n }\n}\n\nvar end = function(ws, fn) {\n if (!ws) return fn()\n if (ws._writableState && ws._writableState.finished) return fn()\n if (ws._writableState) return ws.end(fn)\n ws.end()\n fn()\n}\n\nvar noop = function() {}\n\nvar toStreams2 = function(rs) {\n return new (stream.Readable)({objectMode:true, highWaterMark:16}).wrap(rs)\n}\n\nvar Duplexify = function(writable, readable, opts) {\n if (!(this instanceof Duplexify)) return new Duplexify(writable, readable, opts)\n stream.Duplex.call(this, opts)\n\n this._writable = null\n this._readable = null\n this._readable2 = null\n\n this._autoDestroy = !opts || opts.autoDestroy !== false\n this._forwardDestroy = !opts || opts.destroy !== false\n this._forwardEnd = !opts || opts.end !== false\n this._corked = 1 // start corked\n this._ondrain = null\n this._drained = false\n this._forwarding = false\n this._unwrite = null\n this._unread = null\n this._ended = false\n\n this.destroyed = false\n\n if (writable) this.setWritable(writable)\n if (readable) this.setReadable(readable)\n}\n\ninherits(Duplexify, stream.Duplex)\n\nDuplexify.obj = function(writable, readable, opts) {\n if (!opts) opts = {}\n opts.objectMode = true\n opts.highWaterMark = 16\n return new Duplexify(writable, readable, opts)\n}\n\nDuplexify.prototype.cork = function() {\n if (++this._corked === 1) this.emit('cork')\n}\n\nDuplexify.prototype.uncork = function() {\n if (this._corked && --this._corked === 0) this.emit('uncork')\n}\n\nDuplexify.prototype.setWritable = function(writable) {\n if (this._unwrite) this._unwrite()\n\n if (this.destroyed) {\n if (writable && writable.destroy) writable.destroy()\n return\n }\n\n if (writable === null || writable === false) {\n this.end()\n return\n }\n\n var self = this\n var unend = eos(writable, {writable:true, readable:false}, destroyer(this, this._forwardEnd))\n\n var ondrain = function() {\n var ondrain = self._ondrain\n self._ondrain = null\n if (ondrain) ondrain()\n }\n\n var clear = function() {\n self._writable.removeListener('drain', ondrain)\n unend()\n }\n\n if (this._unwrite) process.nextTick(ondrain) // force a drain on stream reset to avoid livelocks\n\n this._writable = writable\n this._writable.on('drain', ondrain)\n this._unwrite = clear\n\n this.uncork() // always uncork setWritable\n}\n\nDuplexify.prototype.setReadable = function(readable) {\n if (this._unread) this._unread()\n\n if (this.destroyed) {\n if (readable && readable.destroy) readable.destroy()\n return\n }\n\n if (readable === null || readable === false) {\n this.push(null)\n this.resume()\n return\n }\n\n var self = this\n var unend = eos(readable, {writable:false, readable:true}, destroyer(this))\n\n var onreadable = function() {\n self._forward()\n }\n\n var onend = function() {\n self.push(null)\n }\n\n var clear = function() {\n self._readable2.removeListener('readable', onreadable)\n self._readable2.removeListener('end', onend)\n unend()\n }\n\n this._drained = true\n this._readable = readable\n this._readable2 = readable._readableState ? readable : toStreams2(readable)\n this._readable2.on('readable', onreadable)\n this._readable2.on('end', onend)\n this._unread = clear\n\n this._forward()\n}\n\nDuplexify.prototype._read = function() {\n this._drained = true\n this._forward()\n}\n\nDuplexify.prototype._forward = function() {\n if (this._forwarding || !this._readable2 || !this._drained) return\n this._forwarding = true\n\n var data\n\n while (this._drained && (data = shift(this._readable2)) !== null) {\n if (this.destroyed) continue\n this._drained = this.push(data)\n }\n\n this._forwarding = false\n}\n\nDuplexify.prototype.destroy = function(err, cb) {\n if (!cb) cb = noop\n if (this.destroyed) return cb(null)\n this.destroyed = true\n\n var self = this\n process.nextTick(function() {\n self._destroy(err)\n cb(null)\n })\n}\n\nDuplexify.prototype._destroy = function(err) {\n if (err) {\n var ondrain = this._ondrain\n this._ondrain = null\n if (ondrain) ondrain(err)\n else this.emit('error', err)\n }\n\n if (this._forwardDestroy) {\n if (this._readable && this._readable.destroy) this._readable.destroy()\n if (this._writable && this._writable.destroy) this._writable.destroy()\n }\n\n this.emit('close')\n}\n\nDuplexify.prototype._write = function(data, enc, cb) {\n if (this.destroyed) return\n if (this._corked) return onuncork(this, this._write.bind(this, data, enc, cb))\n if (data === SIGNAL_FLUSH) return this._finish(cb)\n if (!this._writable) return cb()\n\n if (this._writable.write(data) === false) this._ondrain = cb\n else if (!this.destroyed) cb()\n}\n\nDuplexify.prototype._finish = function(cb) {\n var self = this\n this.emit('preend')\n onuncork(this, function() {\n end(self._forwardEnd && self._writable, function() {\n // haxx to not emit prefinish twice\n if (self._writableState.prefinished === false) self._writableState.prefinished = true\n self.emit('prefinish')\n onuncork(self, cb)\n })\n })\n}\n\nDuplexify.prototype.end = function(data, enc, cb) {\n if (typeof data === 'function') return this.end(null, null, data)\n if (typeof enc === 'function') return this.end(data, null, enc)\n this._ended = true\n if (data) this.write(data)\n if (!this._writableState.ending && !this._writableState.destroyed) this.write(SIGNAL_FLUSH)\n return stream.Writable.prototype.end.call(this, cb)\n}\n\nmodule.exports = Duplexify\n","'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n","// Copyright Takatoshi Kondo 2021\n//\n// Distributed under the MIT License\n\nconst NumberAllocator = require('./lib/number-allocator.js')\n\nmodule.exports.NumberAllocator = NumberAllocator\n","// Copyright Takatoshi Kondo 2021\n//\n// Distributed under the MIT License\n\n'use strict'\n\nconst SortedSet = require('js-sdsl').OrderedSet\nconst debugTrace = require('debug')('number-allocator:trace')\nconst debugError = require('debug')('number-allocator:error')\n/**\n * Interval constructor\n * @constructor\n * @param {Number} low - The lowest value of the interval\n * @param {Number} high - The highest value of the interval\n */\nfunction Interval (low, high) {\n this.low = low\n this.high = high\n}\n\nInterval.prototype.equals = function (other) {\n return this.low === other.low && this.high === other.high\n}\n\nInterval.prototype.compare = function (other) {\n if (this.low < other.low && this.high < other.low) return -1\n if (other.low < this.low && other.high < this.low) return 1\n return 0\n}\n\n/**\n * NumberAllocator constructor.\n * The all numbers are set to vacant status.\n * Time Complexity O(1)\n * @constructor\n * @param {Number} min - The maximum number of allocatable. The number must be integer.\n * @param {Number} maxh - The minimum number of allocatable. The number must be integer.\n */\nfunction NumberAllocator (min, max) {\n if (!(this instanceof NumberAllocator)) {\n return new NumberAllocator(min, max)\n }\n\n this.min = min\n this.max = max\n\n this.ss = new SortedSet(\n [],\n (lhs, rhs) => {\n return lhs.compare(rhs)\n }\n )\n debugTrace('Create')\n this.clear()\n}\n\n/**\n * Get the first vacant number. The status of the number is not updated.\n * Time Complexity O(1)\n * @return {Number} - The first vacant number. If all numbers are occupied, return null.\n * When alloc() is called then the same value will be allocated.\n */\nNumberAllocator.prototype.firstVacant = function () {\n if (this.ss.size() === 0) return null\n return this.ss.front().low\n}\n\n/**\n * Allocate the first vacant number. The number become occupied status.\n * Time Complexity O(1)\n * @return {Number} - The first vacant number. If all numbers are occupied, return null.\n */\nNumberAllocator.prototype.alloc = function () {\n if (this.ss.size() === 0) {\n debugTrace('alloc():empty')\n return null\n }\n const it = this.ss.begin()\n const low = it.pointer.low\n const high = it.pointer.high\n const num = low\n if (num + 1 <= high) {\n // x|----|\n this.ss.updateKeyByIterator(it, new Interval(low + 1, high))\n } else {\n this.ss.eraseElementByPos(0)\n }\n debugTrace('alloc():' + num)\n return num\n}\n\n/**\n * Use the number. The number become occupied status.\n * If the number has already been occupied, then return false.\n * Time Complexity O(logN) : N is the number of intervals (not numbers)\n * @param {Number} num - The number to request use.\n * @return {Boolean} - If `num` was not occupied, then return true, otherwise return false.\n */\nNumberAllocator.prototype.use = function (num) {\n const key = new Interval(num, num)\n const it = this.ss.lowerBound(key)\n if (!it.equals(this.ss.end())) {\n const low = it.pointer.low\n const high = it.pointer.high\n if (it.pointer.equals(key)) {\n // |x|\n this.ss.eraseElementByIterator(it)\n debugTrace('use():' + num)\n return true\n }\n\n // x |-----|\n if (low > num) return false\n\n // |x----|\n if (low === num) {\n // x|----|\n this.ss.updateKeyByIterator(it, new Interval(low + 1, high))\n debugTrace('use():' + num)\n return true\n }\n\n // |----x|\n if (high === num) {\n // |----|x\n this.ss.updateKeyByIterator(it, new Interval(low, high - 1))\n debugTrace('use():' + num)\n return true\n }\n\n // |--x--|\n // x|--|\n this.ss.updateKeyByIterator(it, new Interval(num + 1, high))\n // |--|x|--|\n this.ss.insert(new Interval(low, num - 1))\n debugTrace('use():' + num)\n return true\n }\n\n debugTrace('use():failed')\n return false\n}\n\n/**\n * Deallocate the number. The number become vacant status.\n * Time Complexity O(logN) : N is the number of intervals (not numbers)\n * @param {Number} num - The number to deallocate. The number must be occupied status.\n * In other words, the number must be allocated by alloc() or occupied be use().\n */\nNumberAllocator.prototype.free = function (num) {\n if (num < this.min || num > this.max) {\n debugError('free():' + num + ' is out of range')\n return\n }\n const key = new Interval(num, num)\n const it = this.ss.upperBound(key)\n if (it.equals(this.ss.end())) {\n // ....v\n if (it.equals(this.ss.begin())) {\n // Insert new interval\n this.ss.insert(key)\n return\n }\n it.pre()\n const low = it.pointer.high\n const high = it.pointer.high\n if (high + 1 === num) {\n // Concat to left\n this.ss.updateKeyByIterator(it, new Interval(low, num))\n } else {\n // Insert new interval\n this.ss.insert(key)\n }\n } else {\n if (it.equals(this.ss.begin())) {\n // v....\n if (num + 1 === it.pointer.low) {\n // Concat to right\n const high = it.pointer.high\n this.ss.updateKeyByIterator(it, new Interval(num, high))\n } else {\n // Insert new interval\n this.ss.insert(key)\n }\n } else {\n // ..v..\n const rLow = it.pointer.low\n const rHigh = it.pointer.high\n it.pre()\n const lLow = it.pointer.low\n const lHigh = it.pointer.high\n if (lHigh + 1 === num) {\n if (num + 1 === rLow) {\n // Concat to left and right\n this.ss.eraseElementByIterator(it)\n this.ss.updateKeyByIterator(it, new Interval(lLow, rHigh))\n } else {\n // Concat to left\n this.ss.updateKeyByIterator(it, new Interval(lLow, num))\n }\n } else {\n if (num + 1 === rLow) {\n // Concat to right\n this.ss.eraseElementByIterator(it.next())\n this.ss.insert(new Interval(num, rHigh))\n } else {\n // Insert new interval\n this.ss.insert(key)\n }\n }\n }\n }\n debugTrace('free():' + num)\n}\n\n/**\n * Clear all occupied numbers.\n * The all numbers are set to vacant status.\n * Time Complexity O(1)\n */\nNumberAllocator.prototype.clear = function () {\n debugTrace('clear()')\n this.ss.clear()\n this.ss.insert(new Interval(this.min, this.max))\n}\n\n/**\n * Get the number of intervals. Interval is internal structure of this library.\n * This function is for debugging.\n * Time Complexity O(1)\n * @return {Number} - The number of intervals.\n */\nNumberAllocator.prototype.intervalCount = function () {\n return this.ss.size()\n}\n\n/**\n * Dump the internal structor of the library.\n * This function is for debugging.\n * Time Complexity O(N) : N is the number of intervals (not numbers)\n */\nNumberAllocator.prototype.dump = function () {\n console.log('length:' + this.ss.size())\n for (const element of this.ss) {\n console.log(element)\n }\n}\n\nmodule.exports = NumberAllocator\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (obj === global) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\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; }\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; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict'\n\nfunction ReInterval (callback, interval, args) {\n var self = this;\n\n this._callback = callback;\n this._args = args;\n\n this._interval = setInterval(callback, interval, this._args);\n\n this.reschedule = function (interval) {\n // if no interval entered, use the interval passed in on creation\n if (!interval)\n interval = self._interval;\n\n if (self._interval)\n clearInterval(self._interval);\n self._interval = setInterval(self._callback, interval, self._args);\n };\n\n this.clear = function () {\n if (self._interval) {\n clearInterval(self._interval);\n self._interval = undefined;\n }\n };\n \n this.destroy = function () {\n if (self._interval) {\n clearInterval(self._interval);\n }\n self._callback = undefined;\n self._interval = undefined;\n self._args = undefined;\n };\n}\n\nfunction reInterval () {\n if (typeof arguments[0] !== 'function')\n throw new Error('callback needed');\n if (typeof arguments[1] !== 'number')\n throw new Error('interval needed');\n\n var args;\n\n if (arguments.length > 0) {\n args = new Array(arguments.length - 2);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 2];\n }\n }\n\n return new ReInterval(arguments[0], arguments[1], args);\n}\n\nmodule.exports = reInterval;\n","'use strict'\n\nmodule.exports = require('./index.js')()\n","'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n if (cur instanceof Buffer) {\n return Buffer.from(cur)\n }\n\n return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n opts = opts || {}\n\n if (opts.circles) return rfdcCircles(opts)\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n a2[k] = fn(cur)\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = clone(cur)\n }\n }\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n return o2\n }\n}\n\nfunction rfdcCircles (opts) {\n var refs = []\n var refsNew = []\n\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n var index = refs.indexOf(cur)\n if (index !== -1) {\n a2[k] = refsNew[index]\n } else {\n a2[k] = fn(cur)\n }\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = clone(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap} */ var $wm;\n\t/** @type {Map} */ var $m;\n\t/** @type {import('.').RootNode} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","module.exports = shift\n\nfunction shift (stream) {\n var rs = stream._readableState\n if (!rs) return null\n return (rs.objectMode || typeof stream._duplexState === 'number') ? stream.read() : stream.read(getStateLength(rs))\n}\n\nfunction getStateLength (state) {\n if (state.buffer.length) {\n var idx = state.bufferIndex || 0\n // Since node 6.3.0 state.buffer is a BufferList not an array\n if (state.buffer.head) {\n return state.buffer.head.data.length\n } else if (state.buffer.length - idx > 0 && state.buffer[idx]) {\n return state.buffer[idx].length\n }\n }\n\n return state.length\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowEmptyArrays: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decodeDotInKeys: true,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n duplicates: 'combine',\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n var existing = has.call(obj, key);\n if (existing && options.duplicates === 'combine') {\n obj[key] = utils.combine(obj[key], val);\n } else if (!existing || options.duplicates === 'last') {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = options.allowEmptyArrays && leaf === '' ? [] : [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n var index = parseInt(decodedRoot, 10);\n if (!options.parseArrays && decodedRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== decodedRoot\n && String(index) === decodedRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (decodedRoot !== '__proto__') {\n obj[decodedRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n throw new TypeError('The duplicates option must be either combine, first, or last');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n duplicates: duplicates,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? prefix.replace(/\\./g, '%2E') : prefix;\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query, {\n arrayFormat: 'repeat',\n addQueryPrefix: false\n });\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\n/** @type {(O: object) => string} */\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */\n/** @type {{ [k in `\\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"325c94a2\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"mcu_dev_web_demo:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmcu_dev_web_demo\"] = self[\"webpackChunkmcu_dev_web_demo\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import React from 'react';\nexport default React.createContext(null);","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport useTimeout from '@mui/utils/useTimeout';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`));\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})(_t4 || (_t4 = _`\n opacity: 0;\n position: absolute;\n\n &.${0} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n &.${0} {\n animation-duration: ${0}ms;\n }\n\n & .${0} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${0} {\n opacity: 0;\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n & .${0} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${0};\n animation-duration: 2500ms;\n animation-timing-function: ${0};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = useTimeout();\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if ((event == null ? void 0 : event.type) === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event != null && event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n // We have to make a tradeoff with this delay value.\n startTimer.start(DELAY_RIPPLE, () => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n });\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit, startTimer]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n startTimer.clear();\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.start(0, () => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, [startTimer]);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const [mountedState, setMountedState] = React.useState(false);\n React.useEffect(() => {\n setMountedState(true);\n }, []);\n const enableTouchRipple = mountedState && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple && mountedState) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, mountedState]);\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n const ignore = skipRippleAction;\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n return true;\n });\n }\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a
\n );\n}\n","import \"./containerUtils.css\";\n\nexport function DataContainer(props) {\n return (\n \n
\n
{props.thingName}
\n
\n
\n {props.graphArea !== undefined ? props.graphArea : <>}\n
\n
\n {props.tableArea !== undefined ? props.tableArea : <>}\n
\n
\n );\n}\n","export function resolveLogins(logins) {\n return Promise.all(Object.keys(logins).reduce((arr, name) => {\n const tokenOrProvider = logins[name];\n if (typeof tokenOrProvider === \"string\") {\n arr.push([name, tokenOrProvider]);\n }\n else {\n arr.push(tokenOrProvider().then((token) => [name, token]));\n }\n return arr;\n }, [])).then((resolvedPairs) => resolvedPairs.reduce((logins, [key, value]) => {\n logins[key] = value;\n return logins;\n }, {}));\n}\n","import { CredentialsProviderError } from \"@smithy/property-provider\";\nimport { resolveLogins } from \"./resolveLogins\";\nexport function fromCognitoIdentity(parameters) {\n return async () => {\n parameters.logger?.debug(\"@aws-sdk/credential-provider-cognito-identity\", \"fromCognitoIdentity\");\n const { GetCredentialsForIdentityCommand, CognitoIdentityClient } = await import(\"./loadCognitoIdentity\");\n const { Credentials: { AccessKeyId = throwOnMissingAccessKeyId(), Expiration, SecretKey = throwOnMissingSecretKey(), SessionToken, } = throwOnMissingCredentials(), } = await (parameters.client ??\n new CognitoIdentityClient(Object.assign({}, parameters.clientConfig ?? {}, {\n region: parameters.clientConfig?.region ?? parameters.parentClientConfig?.region,\n }))).send(new GetCredentialsForIdentityCommand({\n CustomRoleArn: parameters.customRoleArn,\n IdentityId: parameters.identityId,\n Logins: parameters.logins ? await resolveLogins(parameters.logins) : undefined,\n }));\n return {\n identityId: parameters.identityId,\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration,\n };\n };\n}\nfunction throwOnMissingAccessKeyId() {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no access key ID\");\n}\nfunction throwOnMissingCredentials() {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no credentials\");\n}\nfunction throwOnMissingSecretKey() {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no secret key\");\n}\n","const STORE_NAME = \"IdentityIds\";\nexport class IndexedDbStorage {\n constructor(dbName = \"aws:cognito-identity-ids\") {\n this.dbName = dbName;\n }\n getItem(key) {\n return this.withObjectStore(\"readonly\", (store) => {\n const req = store.get(key);\n return new Promise((resolve) => {\n req.onerror = () => resolve(null);\n req.onsuccess = () => resolve(req.result ? req.result.value : null);\n });\n }).catch(() => null);\n }\n removeItem(key) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.delete(key);\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n setItem(id, value) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.put({ id, value });\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n getDb() {\n const openDbRequest = self.indexedDB.open(this.dbName, 1);\n return new Promise((resolve, reject) => {\n openDbRequest.onsuccess = () => {\n resolve(openDbRequest.result);\n };\n openDbRequest.onerror = () => {\n reject(openDbRequest.error);\n };\n openDbRequest.onblocked = () => {\n reject(new Error(\"Unable to access DB\"));\n };\n openDbRequest.onupgradeneeded = () => {\n const db = openDbRequest.result;\n db.onerror = () => {\n reject(new Error(\"Failed to create object store\"));\n };\n db.createObjectStore(STORE_NAME, { keyPath: \"id\" });\n };\n });\n }\n withObjectStore(mode, action) {\n return this.getDb().then((db) => {\n const tx = db.transaction(STORE_NAME, mode);\n tx.oncomplete = () => db.close();\n return new Promise((resolve, reject) => {\n tx.onerror = () => reject(tx.error);\n resolve(action(tx.objectStore(STORE_NAME)));\n }).catch((err) => {\n db.close();\n throw err;\n });\n });\n }\n}\n","import { IndexedDbStorage } from \"./IndexedDbStorage\";\nimport { InMemoryStorage } from \"./InMemoryStorage\";\nconst inMemoryStorage = new InMemoryStorage();\nexport function localStorage() {\n if (typeof self === \"object\" && self.indexedDB) {\n return new IndexedDbStorage();\n }\n if (typeof window === \"object\" && window.localStorage) {\n return window.localStorage;\n }\n return inMemoryStorage;\n}\n","export class InMemoryStorage {\n constructor(store = {}) {\n this.store = store;\n }\n getItem(key) {\n if (key in this.store) {\n return this.store[key];\n }\n return null;\n }\n removeItem(key) {\n delete this.store[key];\n }\n setItem(key, value) {\n this.store[key] = value;\n }\n}\n","import { CredentialsProviderError } from \"@smithy/property-provider\";\nimport { fromCognitoIdentity } from \"./fromCognitoIdentity\";\nimport { localStorage } from \"./localStorage\";\nimport { resolveLogins } from \"./resolveLogins\";\nexport function fromCognitoIdentityPool({ accountId, cache = localStorage(), client, clientConfig, customRoleArn, identityPoolId, logins, userIdentifier = !logins || Object.keys(logins).length === 0 ? \"ANONYMOUS\" : undefined, logger, parentClientConfig, }) {\n logger?.debug(\"@aws-sdk/credential-provider-cognito-identity\", \"fromCognitoIdentity\");\n const cacheKey = userIdentifier\n ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}`\n : undefined;\n let provider = async () => {\n const { GetIdCommand, CognitoIdentityClient } = await import(\"./loadCognitoIdentity\");\n const _client = client ??\n new CognitoIdentityClient(Object.assign({}, clientConfig ?? {}, { region: clientConfig?.region ?? parentClientConfig?.region }));\n let identityId = (cacheKey && (await cache.getItem(cacheKey)));\n if (!identityId) {\n const { IdentityId = throwOnMissingId() } = await _client.send(new GetIdCommand({\n AccountId: accountId,\n IdentityPoolId: identityPoolId,\n Logins: logins ? await resolveLogins(logins) : undefined,\n }));\n identityId = IdentityId;\n if (cacheKey) {\n Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => { });\n }\n }\n provider = fromCognitoIdentity({\n client: _client,\n customRoleArn,\n logins,\n identityId,\n });\n return provider();\n };\n return () => provider().catch(async (err) => {\n if (cacheKey) {\n Promise.resolve(cache.removeItem(cacheKey)).catch(() => { });\n }\n throw err;\n });\n}\nfunction throwOnMissingId() {\n throw new CredentialsProviderError(\"Response from Amazon Cognito contained no identity ID\");\n}\n","import { fromCognitoIdentityPool as _fromCognitoIdentityPool, } from \"@aws-sdk/credential-provider-cognito-identity\";\nexport const fromCognitoIdentityPool = (options) => _fromCognitoIdentityPool({\n ...options,\n});\n","export const AWS_REGION = process.env.REACT_APP_REGION;\nexport const AWS_IOT_ENDPOINT = process.env.REACT_APP_IOT_ENDPOINT;\nexport const AWS_COGNITO_IDENTITY_POOL_ID =\n process.env.REACT_APP_COGNITO_IDENTITY_POOL_ID;\nexport const DEMO_THING_NAME = \"MCU_DEV_BOARD_ES2-041\";\n","import { mqtt5, auth, iot } from \"aws-iot-device-sdk-v2\";\nimport { once } from \"events\";\nimport { fromCognitoIdentityPool } from \"@aws-sdk/credential-providers\";\n// @ts-ignore\nimport {\n AWS_REGION,\n AWS_COGNITO_IDENTITY_POOL_ID,\n AWS_IOT_ENDPOINT,\n} from \"./settings\";\n\nclass AWSCognitoCredentialsProvider extends auth.CredentialsProvider {\n constructor(options, expire_interval_in_ms) {\n super();\n this.options = options;\n\n setInterval(async () => {\n await this.refreshCredentials();\n }, expire_interval_in_ms ?? 3600 * 1000);\n }\n\n getCredentials() {\n return {\n aws_access_id: this.cachedCredentials?.accessKeyId ?? \"\",\n aws_secret_key: this.cachedCredentials?.secretAccessKey ?? \"\",\n aws_sts_token: this.cachedCredentials?.sessionToken,\n aws_region: this.options.Region,\n };\n }\n\n async refreshCredentials() {\n //console.log(\"Fetching Cognito credentials\");\n this.cachedCredentials = await fromCognitoIdentityPool({\n // Required. The unique identifier for the identity pool from which an identity should be\n // retrieved or generated.\n identityPoolId: this.options.IdentityPoolId,\n clientConfig: { region: this.options.Region },\n })();\n }\n}\n\nexport function createClient(provider) {\n let wsConfig = {\n credentialsProvider: provider,\n region: AWS_REGION,\n };\n\n let builder =\n iot.AwsIotMqtt5ClientConfigBuilder.newWebsocketMqttBuilderWithSigv4Auth(\n AWS_IOT_ENDPOINT,\n wsConfig\n );\n\n let client = new mqtt5.Mqtt5Client(builder.build());\n\n client.on(\"error\", (error) => {\n //console.log(\"Error event: \" + error.toString());\n });\n\n client.on(\"messageReceived\", (eventData) => {\n //console.log(\"Message Received event: \" + JSON.stringify(eventData.message));\n if (eventData.message.payload) {\n //console.log(\" with payload: \" + toUtf8(eventData.message.payload));\n }\n });\n\n client.on(\"attemptingConnect\", (eventData) => {\n //console.log(\"Attempting Connect event\");\n });\n\n client.on(\"connectionSuccess\", (eventData) => {\n //console.log(\"Connection Success event\");\n //console.log(\"Connack: \" + JSON.stringify(eventData.connack));\n //console.log(\"Settings: \" + JSON.stringify(eventData.settings));\n });\n\n client.on(\"connectionFailure\", (eventData) => {\n //console.log(\"Connection failure event: \" + eventData.error.toString());\n });\n\n client.on(\"disconnection\", (eventData) => {\n //console.log(\"Disconnection event: \" + eventData.error.toString());\n if (eventData.disconnect !== undefined) {\n //console.log(\"Disconnect packet: \" + JSON.stringify(eventData.disconnect));\n }\n });\n\n client.on(\"stopped\", (eventData) => {\n //console.log(\"Stopped event\");\n });\n\n return client;\n}\n\nexport async function startMqtt5Connection() {\n /** Set up the credentialsProvider */\n const provider = new AWSCognitoCredentialsProvider({\n IdentityPoolId: AWS_COGNITO_IDENTITY_POOL_ID,\n Region: AWS_REGION,\n });\n /** Make sure the credential provider fetched before setup the connection */\n await provider.refreshCredentials();\n\n const client = createClient(provider);\n\n const attemptingConnect = once(client, \"attemptingConnect\");\n const connectionSuccess = once(client, \"connectionSuccess\");\n\n client.start();\n\n await attemptingConnect;\n await connectionSuccess;\n\n return client;\n}\n\nexport async function subscribeMqtt5(client, topic_name) {\n const suback = await client.subscribe({\n subscriptions: [{ qos: mqtt5.QoS.AtLeastOnce, topicFilter: topic_name }],\n });\n //console.log(`subscribe ${topic_name} now`);\n //console.log(\"Subscribe result: \" + JSON.stringify(suback));\n\n return suback;\n}\n\nexport async function publishMqtt5(client, topic_name, payload) {\n const ret = await client.publish({\n qos: mqtt5.QoS.AtMostOnce,\n topicName: topic_name,\n payload: payload,\n });\n //console.log(\"Publish result: \" + JSON.stringify(ret));\n\n return ret;\n}\n\nexport async function closeConnection(client) {\n const disconnection = once(client, \"disconnection\");\n const stopped = once(client, \"stopped\");\n\n client.stop();\n await disconnection;\n await stopped;\n}\n","//16進数の配列からヒートマップを作成する。\n//int16の配列に変換可能な文字列の配列を、数字の配列に変換する\nexport function uint16ListToThermoMap(strList) {\n //int16に変換可能な文字列の配列を、数字の配列に変換する\n const tmp_list = strList.match(/.{4}/g);\n const mapData = str2NumberMap(tmp_list);\n return mapData;\n}\n\nconst str2NumberMap = (strList) => {\n const tmp = [];\n strList.map((value, index) => {\n if (index > 0) {\n tmp.push(parseInt(value, 16) / 10.0); //値は温度*10で文字列の配列から渡されるため、10で割って温度の値を求める。\n }\n return true;\n });\n\n //配列を指定の数ごとに分割する\n const sliceByNumber = (array, number) => {\n const length = Math.ceil(array.length / number);\n return new Array(length)\n .fill()\n .map((_, i) => array.slice(i * number, (i + 1) * number));\n };\n\n const data = sliceByNumber(tmp, 32);\n return data;\n};\n","import { useEffect, useState } from \"react\";\nimport useEvent from \"react-use-event-hook\";\nimport \"./ThermoSensorDemo.css\";\nimport { Heatmap } from \"../components/Heatmap\";\nimport { DataContainer } from \"../components/containerUtils\";\nimport { subscribeMqtt5 } from \"../utils/connect_aws.js\";\nimport { uint16ListToThermoMap } from \"../utils/thermoUtils.js\";\nimport { isSmartPhone } from \"../utils/judgeDevice.js\";\n\nconst INITIAL_TEMPERATURE_MAP = [...Array(32)].map(() => {\n return [...Array(32)].map(() => 0);\n});\nconst TOPIC_PREFIX = \"sensor_demo/thermo_sensor/\";\n\nfunction ThermoSensorDemo(props) {\n const client = props.client;\n\n const [deviceList, setDeviceList] = useState([\"MCU_DEV_BOARD_NEW_LAB\"]);\n const [subscribedDeviceList, setSubscribedDeviceList] = useState([]);\n const [temperature2d, setTemperature2d] = useState({\n MCU_DEV_BOARD_NEW_LAB: INITIAL_TEMPERATURE_MAP,\n });\n\n // トピックのサブスクライブを開始する。\n useEffect(() => {\n (async () => {\n if (client != null) {\n const currentDevice = deviceList[deviceList.length - 1];\n\n if (subscribedDeviceList.indexOf(currentDevice) >= 0) {\n //console.log(\"This device is already subscribed.\");\n } else {\n if (client !== undefined) {\n await subscribeMqtt5(client, TOPIC_PREFIX + currentDevice);\n //console.log(\"suback: \", ret);\n setSubscribedDeviceList([...subscribedDeviceList, currentDevice]);\n }\n }\n }\n })();\n }, [client]);\n\n // Mqttメッセージを受け取ったときにペイロードを取得し処理するハンドラーを登録。\n const processPayload = useEvent((eventData) => {\n if (eventData.message.topicName.includes(TOPIC_PREFIX)) {\n if (eventData.message.payload) {\n const data = JSON.parse(eventData.message.payload);\n\n // get thing name\n const thingName = eventData.message.topicName.replace(TOPIC_PREFIX, \"\");\n if (deviceList.indexOf(thingName) >= 0) {\n // update thermo data\n const thermoData = uint16ListToThermoMap(data[\"thermo\"]);\n const thermoDataReversed = thermoData.map((row) => {\n return row.reverse();\n });\n //console.log(thermoData);\n setTemperature2d({\n ...temperature2d,\n [thingName]: thermoDataReversed,\n });\n }\n }\n }\n });\n\n useEffect(() => {\n if (client != null) {\n client.on(\"messageReceived\", processPayload);\n }\n }, [client]);\n\n return (\n
\n {props.isSummary ?
: }\n \n {deviceList.map((device) => {\n return (\n }\n />\n );\n })}\n {isSmartPhone() ? (\n
\n ) : (\n
\n

サーマル画像データ転送デモ

\n

\n MRF61_A_MCU開発ボード上に取り付けたサーマルカメラ(32x32)の映像をWi-Fi\n HaLow経由でAWSのサーバーに転送し、Web上のビューワーで映像を確認できるデモです。\n

\n

\n 下記QRコードのリンクから、お手元のスマホでも映像をご確認いただけます。\n

\n \n
\n )}\n
\n
\n );\n}\n\nconst ColorBar = () => {\n return (\n \n \n
20℃
\n
35℃
\n
\n \"\"\n \n );\n};\n\nexport default ThermoSensorDemo;\n","import { useState, useEffect } from \"react\";\nimport Button from \"@mui/material/Button\";\nimport LocalFireDepartmentIcon from \"@mui/icons-material/LocalFireDepartment\";\nimport \"./tabs.css\";\nimport \"./App.css\";\nimport ThermoSensorDemo from \"./demos/ThermoSensorDemo\";\nimport { startMqtt5Connection } from \"./utils/connect_aws.js\";\nimport { isSmartPhone } from \"./utils/judgeDevice.js\";\n\nconst sensorList = [\"THERMO\"];\n\nexport default function App() {\n const [sensor, setSensor] = useState(sensorList[0]);\n const [client, setClient] = useState(null);\n\n // Create Mqtt5 client.\n useEffect(() => {\n (async () => {\n const createdClient = await startMqtt5Connection();\n setClient(createdClient);\n })();\n }, []);\n\n const DemoIcon = (props) => {\n switch (props.startIconName) {\n case sensorList[0]:\n return (\n \n );\n default:\n return
There is no demonstration for the sensor.
;\n }\n };\n\n return (\n
\n {isSmartPhone() ? (\n
\n ) : (\n
\n

MCU Dev Board Demo

\n \n
\n {sensorList.map((s) => {\n return (\n }\n onClick={(e) => {\n setSensor(s);\n }}\n >\n
\n {s}\n
\n \n );\n })}\n
\n
\n )}\n\n
\n
\n

{sensor}

\n
\n \n \n
\n
\n \n );\n}\n","import ReactDOM from \"react-dom/client\";\nimport \"./index.css\";\nimport App from \"./App\";\n//import reportWebVitals from \"./reportWebVitals\";\n\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\nroot.render(\n //\n \n //\n //\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n//reportWebVitals();\n"],"names":["fromUtf8","input","TextEncoder","encode","textEncoderFromUtf8","bytes","i","len","length","value","charCodeAt","push","surrogatePair","Uint8Array","from","jsFromUtf8","toUtf8","TextDecoder","decode","textEncoderToUtf8","decoded","byte","String","fromCharCode","nextByte","encoded","map","byteValue","toString","join","decodeURIComponent","jsToUtf8","StyleSheet","options","_this","this","_insertTag","tag","before","tags","insertionPoint","nextSibling","prepend","container","firstChild","insertBefore","isSpeedy","undefined","speedy","ctr","nonce","key","_proto","prototype","hydrate","nodes","forEach","insert","rule","document","createElement","setAttribute","appendChild","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","e","process","flush","parentNode","removeChild","abs","Math","assign","Object","trim","replace","pattern","replacement","indexof","search","indexOf","charat","index","substr","begin","end","slice","strlen","sizeof","append","array","line","column","position","character","characters","node","root","parent","type","props","children","return","copy","prev","next","peek","caret","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","count","commenter","identifier","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","KEYFRAMES","serialize","callback","output","stringify","element","compile","parse","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","size","j","k","x","y","z","identifierWithPointTracking","getRules","parsed","toRules","fixedElements","WeakMap","compat","isImplicitRule","get","set","parentRules","removeLabel","prefix","hash","defaultStylisPlugins","combine","exec","match","createCache","ssrStyles","querySelectorAll","Array","call","getAttribute","head","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","split","currentSheet","finalizingPlugins","serializer","collection","middleware","concat","selector","serialized","shouldCache","styles","cache","name","registered","memoize","fn","create","arg","isBrowser","EmotionCacheContext","React","HTMLElement","CacheProvider","Provider","withEmotionCache","func","forwardRef","ref","useContext","ThemeContext","Global","serializeStyles","isBrowser$1","_ref","serializedNames","serializedStyles","dangerouslySetInnerHTML","__html","sheetRef","useInsertionEffectWithLayoutFallback","constructor","rehydrating","querySelector","current","sheetRefCurrent","insertStyles","nextElementSibling","css","_len","arguments","args","_key","keyframes","insertable","apply","anim","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","toLowerCase","processStyleValue","p1","p2","cursor","unitless","handleInterpolation","mergedProps","interpolation","__emotion_styles","obj","string","isArray","interpolated","_i","createStringFromObject","previousCursor","result","cached","labelPattern","stringMode","strings","raw","lastIndex","identifierName","str","h","hashString","useInsertionEffect","useInsertionEffectAlwaysWithSyncFallback","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","registerStyles","isStringTag","module","exports","arr","pna","require","objectKeys","keys","Duplex","util","inherits","Readable","Writable","v","method","readable","writable","allowHalfOpen","once","onend","_writableState","ended","nextTick","onEndNT","self","defineProperty","enumerable","highWaterMark","_readableState","destroyed","_destroy","err","cb","PassThrough","Transform","_transform","chunk","encoding","ReadableState","EElistenerCount","emitter","listeners","Stream","Buffer","OurUint8Array","global","window","debugUtil","debug","debuglog","StringDecoder","BufferList","destroyImpl","kProxyEvents","stream","isDuplex","objectMode","readableObjectMode","hwm","readableHwm","readableHighWaterMark","defaultHwm","floor","buffer","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","awaitDrain","readingMore","decoder","read","_read","destroy","readableAddChunk","addToFront","skipChunkCheck","er","state","emitReadable","onEofChunk","isBuffer","TypeError","chunkInvalid","emit","getPrototypeOf","_uint8ArrayToBuffer","Error","addChunk","write","maybeReadMore","needMoreData","unshift","_undestroy","undestroy","isPaused","setEncoding","enc","MAX_HWM","howMuchToRead","n","data","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","ret","shift","clear","list","hasStrings","p","c","nb","tail","copyFromBufferString","allocUnsafe","buf","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","l","parseInt","nOrig","doRead","pipe","dest","pipeOpts","src","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","needDrain","on","pipeOnDrain","increasedAwaitDrain","pause","event","prependListener","_events","resume","dests","splice","ev","res","addListener","wrap","paused","bind","_fromList","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","_flush","prefinish","done","_write","_this2","err2","CorkedRequest","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","browser","version","setImmediate","WritableState","internalUtil","deprecate","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","ending","finished","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","getBuffer","out","_","Symbol","hasInstance","Function","object","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","instance","Constructor","_classCallCheck","s","target","inspect","custom","emitErrorNT","readableDestroyed","writableDestroyed","copyProps","dst","SafeBuffer","encodingOrOffset","allocUnsafeSlow","fill","SlowBuffer","isEncoding","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","r","utf8CheckExtraBytes","total","utf8CheckIncomplete","duplexify","WS","protocols","socket","title","isNative","WebSocket","socketWrite","socketWriteBrowser","bufferedAmount","bufferSize","setTimeout","bufferTimeout","coerceToBuffer","send","readyState","OPEN","protocol","binary","proxy","socketEnd","buildProxy","close","browserBufferSize","browserBufferTimeout","binaryType","eventListenerSupport","addEventListener","onopen","onmessage","setReadable","setWritable","closeDetails","ArrayBuffer","chunks","buffers","_interopRequireDefault","_createSvgIcon","_jsxRuntime","default","jsx","d","_utils","createSvgIcon","black","white","A100","A200","A400","A700","_excluded","light","primary","secondary","disabled","divider","background","paper","common","action","active","hover","hoverOpacity","selected","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","dark","icon","addLightOrDark","intent","direction","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","hasOwnProperty","lighten","main","darken","createPalette","palette","mode","contrastThreshold","other","_objectWithoutPropertiesLoose","blue","getDefaultPrimary","purple","getDefaultSecondary","error","red","getDefaultError","info","lightBlue","getDefaultInfo","success","green","getDefaultSuccess","warning","orange","getDefaultWarning","getContrastText","getContrastRatio","augmentColor","color","mainShade","lightShade","darkShade","_extends","_formatMuiErrorMessage","JSON","contrastText","modes","deepmerge","grey","caseAllCaps","textTransform","defaultFontFamily","createTypography","typography","fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem","pxToRem2","coef","buildVariant","letterSpacing","casing","round","variants","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","inherit","clone","createShadow","easing","easeInOut","easeOut","easeIn","sharp","duration","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","getAutoHeightDuration","height","constant","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","delay","animatedProp","mobileStepper","fab","speedDial","appBar","drawer","modal","snackbar","tooltip","createTheme","mixins","mixinsInput","paletteInput","transitions","transitionsInput","typographyInput","vars","systemTheme","systemCreateTheme","muiTheme","breakpoints","toolbar","minHeight","up","shadows","reduce","acc","argument","unstable_sxConfig","defaultSxConfig","unstable_sx","styleFunctionSx","sx","theme","prop","slotShouldForwardProp","createStyled","themeId","THEME_ID","defaultTheme","rootShouldForwardProp","contextTheme","systemDefaultTheme","useThemeWithoutDefault","useThemeProps","useTheme","params","components","defaultProps","resolveProps","getThemeProps","systemUseThemeProps","funcs","_len2","_key2","getSvgIconUtilityClass","slot","generateUtilityClass","generateUtilityClasses","SvgIconRoot","styled","overridesResolver","ownerState","capitalize","_theme$transitions","_theme$transitions$cr","_theme$transitions2","_theme$typography","_theme$typography$pxT","_theme$typography2","_theme$typography2$px","_theme$typography3","_theme$typography3$px","_palette$ownerState$c","_palette","_palette2","_palette3","userSelect","width","display","hasSvgAsChild","transition","small","medium","large","SvgIcon","inProps","component","htmlColor","inheritViewBox","titleAccess","viewBox","instanceFontSize","more","classes","slots","composeClasses","useUtilityClasses","_jsxs","as","clsx","focusable","role","_jsx","muiName","path","displayName","Component","timeout","wait","debounced","clearTimeout","later","validator","reason","muiNames","_muiName","_element$type","_payload","ownerDocument","defaultView","componentNameInError","globalId","maybeReactUseId","idOverride","reactId","defaultId","setDefaultId","id","useGlobalId","propName","componentName","location","propFullName","controlled","defaultProp","isControlled","valueState","setValue","newValue","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","useEnhancedEffect","refs","every","setRef","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","Timeout","inputTypesWhitelist","url","tel","email","password","number","date","month","week","time","datetime","handleKeyDown","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","visibilityState","isFocusVisible","matches","tagName","readOnly","isContentEditable","focusTriggersKeyboardModality","doc","isFocusVisibleRef","onFocus","onBlur","start","reactPropsRegex","isPropValid","test","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","isReal","shouldForwardProp","optionsShouldForwardProp","__emotion_forwardProp","Insertion","newStyled","targetClassName","__emotion_real","baseTag","__emotion_base","label","defaultShouldForwardProp","shouldUseAs","Styled","FinalTag","classInterpolations","finalShouldForwardProp","newProps","withComponent","nextTag","nextOptions","StyledEngineProvider","injectFirst","GlobalStyles","globalStyles","themeInput","emStyled","internal_processStyles","processor","alpha","foreground","lumA","getLuminance","lumB","max","min","_formatMuiErrorMessage2","_clamp","clampWrapper","hexToRgb","re","RegExp","colors","decomposeColor","charAt","marker","substring","colorSpace","values","parseFloat","colorChannel","decomposedColor","val","idx","recomposeColor","hslToRgb","a","f","rgb","Number","toFixed","coefficient","emphasize","systemSx","_styleFunctionSx","_extends2","resolveTheme","__mui_systemSx","inputOptions","_styledEngine","filter","style","componentSlot","skipVariantsResolver","inputSkipVariantsResolver","skipSx","inputSkipSx","defaultOverridesResolver","lowercaseFirstLetter","_objectWithoutPropertiesLoose2","_excluded3","shouldForwardPropOption","defaultStyledResolver","transformStyleArg","stylesArg","_deepmerge","isPlainObject","processStyleArg","muiStyledResolver","styleArg","transformedStyleArg","expressions","expressionsWithDefaultTheme","styleOverrides","resolvedStyleOverrides","entries","_ref3","slotKey","slotStyle","_theme$components","numOfCustomFnsApplied","placeholders","withConfig","__esModule","t","_getRequireWildcardCache","has","__proto__","getOwnPropertyDescriptor","u","_interopRequireWildcard","_createTheme","_excluded2","_ref2","callableStyle","resolvedStylesArg","flatMap","resolvedStyle","variant","isMatch","sm","md","lg","xl","defaultBreakpoints","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","item","breakpoint","cssKey","createEmptyBreakpointObject","breakpointsInput","_breakpointsInput$key","removeUnusedBreakpoints","breakpointKeys","breakpointOutput","applyStyles","getColorSchemeSelector","sortBreakpointsValues","breakpointsAsArray","sort","breakpoint1","breakpoint2","createBreakpoints","unit","step","sortedValues","down","between","endIndex","only","not","keyIndex","borderRadius","spacing","spacingInput","shape","shapeInput","mui","createUnarySpacing","argsInput","createSpacing","properties","m","directions","b","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","themeKey","defaultValue","_getPath","themeSpacing","getPath","getValue","transformer","transformed","resolveCssProperty","cssProperties","cssProperty","getStyleFromPropValue","merge","margin","padding","propTypes","filterProps","checkVars","getStyleValue","themeMapping","propValueFinal","userValue","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","compose","gap","columnGap","rowGap","paletteTransform","sizingTransform","maxWidth","_props$theme","_props$theme2","breakpointsValues","minWidth","maxHeight","bgcolor","backgroundColor","pt","pr","pb","pl","px","py","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mr","mb","ml","mx","my","marginTop","marginRight","marginBottom","marginLeft","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","overflow","textOverflow","visibility","whiteSpace","flexBasis","flexDirection","flexWrap","justifyContent","alignItems","alignContent","alignSelf","justifyItems","justifySelf","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","top","right","bottom","left","boxShadow","boxSizing","fontStyle","textAlign","splitProps","_props$theme$unstable","systemProps","otherProps","config","extendSxProp","inSx","finalSx","unstable_createStyleFunctionSx","getThemeValue","_theme$unstable_sxCon","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsKeys","styleKey","maybeFn","objects","allKeys","union","Set","objectsHaveSameKeys","defaultGenerator","createClassNameGenerator","generate","reset","toUpperCase","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","getUtilityClass","utilityClass","toStringTag","iterator","deepClone","source","formatMuiErrorMessage","code","encodeURIComponent","globalStateClasses","checked","completed","expanded","focused","focusVisible","open","required","globalStatePrefix","globalStateClass","fnNameMatchRegex","getFunctionName","getFunctionComponentName","fallback","getWrappedName","outerType","innerType","wrapperName","functionName","getDisplayName","$$typeof","ForwardRef","render","Memo","defaultSlotProps","slotProps","slotPropName","UNINITIALIZED","EMPTY","currentId","disposeEffect","useTimeout","init","initArg","useLazyRef","ProviderError","message","tryNextLink","super","setPrototypeOf","CredentialsProviderError","provider","isExpired","requiresRefresh","resolved","pending","hasResult","isConstant","coalesceProvider","async","forceRefresh","cancel","__importStar","platform","promise","resource_safety","io","mqtt","mqtt5","http","crypto","iot","auth","error_1","CrtError","CredentialsProvider","getCredentials","refreshCredentials","Promise","resolve","reject","StaticCredentialProvider","_super","credentials","__extends","auth_1","io_1","iot_shared","AwsIotMqttConnectionConfigBuilder","client_id","host_name","socket_options","SocketOptions","port","clean_session","keep_alive","will","username","websocket","credentials_provider","new_mtls_builder","new_builder_for_websocket","new_default_builder","new_websocket_builder","new_with_websockets","__spreadArray","__read","with_endpoint","endpoint","with_client_id","with_port","with_clean_session","with_use_websockets","with_keep_alive_seconds","with_timeout_ms","timeout_ms","with_ping_timeout_ms","ping_timeout","with_will","with_socket_options","with_websocket_headers","headers","with_credentials","aws_region","aws_access_id","aws_secret_key","aws_sts_token","with_credential_provider","customer_provider","with_custom_authorizer","authorizer_name","authorizer_signature","token_key_name","token_value","uri_encoded_signature","canonicalizeCustomAuthTokenSignature","username_string","populate_username_string_with_custom_authorizer","with_username","with_password","with_reconnect_max_sec","max_sec","reconnect_max_sec","with_reconnect_min_sec","min_sec","reconnect_min_sec","build","crt_version","AwsIotMqtt5ClientConfigBuilder","hostName","websocketConfig","connectProperties","keepAliveIntervalSeconds","DEFAULT_KEEP_ALIVE","websocketOptions","newWebsocketMqttBuilderWithSigv4Auth","sigv4Config","region","_a","extractRegionFromEndpoint","urlFactoryOptions","urlFactory","Mqtt5WebsocketUrlFactoryType","Sigv4","credentialsProvider","DEFAULT_WEBSOCKET_MQTT_PORT","newWebsocketMqttBuilderWithCustomAuth","customAuthConfig","Wss","builder","canonicalizeCustomAuthConfig","withPort","withConnectProperties","connectPacket","withSessionBehavior","sessionBehavior","withRetryJitterMode","retryJitterMode","withMinReconnectDelayMs","minReconnectDelayMs","withMaxReconnectDelayMs","maxReconnectDelayMs","withMinConnectedTimeToResetReconnectDelayMs","minConnectedTimeToResetReconnectDelayMs","withConnectTimeoutMs","connectTimeoutMs","withWebsocketTransportOptions","wsOptions","buildMqtt5FinalUsername","_b","Crypto","util_utf8_browser_1","Md5Hash","update","MD5","finalize","truncate_to","digest","truncated","DataView","md5","Sha256Hash","SHA256","Sha1Hash","SHA1","Sha256Hmac","secret","hmac","algo","HMAC","error_name","http_1","http_2","HttpProxyAuthenticationType","event_1","axios","HttpHeaders","headers_1","__values","headers_1_1","header","add","get_values","values_list","values_list_1","values_list_1_1","default_value","remove","remove_value","e_3","values_1","values_1_1","_e","sent","_flatten","flattened","_c","pair","HttpProxyOptions","CommonHttpProxyOptions","HttpRequest","body","HttpClientConnection","bootstrap","socketOptions","tlsOptions","proxyOptions","tls_options","proxy_options","scheme","axios_options","baseURL","host","auth_method","Basic","auth_username","auth_password","_axios","listener","request","connection","_to_object","forbidden_headers","headers_2","headers_2_1","HttpClientStream","_create","then","response","_on_response","catch","_on_error","stream_request","CONNECT","ERROR","CLOSE","BufferedEventEmitter","status_code","response_status_code","activate","status","RESPONSE","DATA","END","HttpClientConnectionManager","max_connections","initial_window_size","tls_opts","pending_connections","live_connections","free_connections","pending_requests","delete","free_idx","pump","connection_1","pop","ClientBootstrap","acquire","release","TlsVersion","SocketType","SocketDomain","io_2","InputStream","TlsConnectionOptions","tls_ctx","server_name","alpn_list","TlsContext","ClientTlsContext","domain","connect_timeout_ms","keepalive","keep_alive_interval_sec","keep_alive_timeout_sec","keep_alive_max_failed_probes","STREAM","IPV6","__exportStar","WebsocketUtils","trie_1","browser_1","mqtt_1","mqtt_shared_1","mqtt_2","QoS","MqttWill","MqttBrowserClientState","MqttClient","new_connection","MqttClientConnection","TopicTrie","find_node","op","parts","split_key","parts_1","parts_1_1","part","child","TrieOp","Insert","Node","Delete","Trie","client","subscriptions","connection_count","reconnect_count","DEFAULT_RECONNECT_MIN_SEC","DEFAULT_RECONNECT_MAX_SEC","currentState","Stopped","desiredState","on_connect","connack","on_online","sessionPresent","session_present","Connected","reset_reconnect_times","successCallbackData","on_close","lastError","failureCallbackData","waitTime","get_reconnect_time_sec","reconnectTask","reconnect","on_disconnected","on_error","on_message","topic","payload","packet","array_buffer","byteOffset","byteLength","find","dup","qos","retain","normalize_payload","websocketXform","create_websocket_url","create_websocket_stream","clientId","connectTimeout","clean","reconnectPeriod","transformWsUrl","connect","__awaiter","on_connect_error","crtError","publish","payload_data","AtMostOnce","messageId","packet_id","subscribe","sub","unsubscribe","disconnect","cap","base","sleep","random","pow","DISCONNECT","INTERRUPT","RESUME","MESSAGE","CONNECTION_SUCCESS","CONNECTION_FAILURE","CLOSED","mqtt5_1","mqtt5_packet","mqtt_utils","mqtt_shared","Mqtt5ClientState","Mqtt5ClientLifecycleEventState","ReconnectionScheduler","browserClient","clientConfig","connectionFailureCount","lastReconnectDelay","resetConnectionFailureCountTask","reconnectionTask","onSuccessfulConnection","clearTasks","DEFAULT_MIN_CONNECTED_TIME_TO_RESET_RECONNECT_DELAY_MS","onConnectionFailureOrDisconnection","nextDelay","calculateNextReconnectDelay","sigv4Options","randomInRange","jitterType","RetryJitterType","Default","getOrderedReconnectDelayBounds","minDelay","maxDelay","clampedFailureCount","None","Decorrelated","Mqtt5Client","messageReceivedEvent","transform_mqtt_js_publish_to_crt_publish","MESSAGE_RECEIVED","mqttJsConfig","create_mqtt_js_client_config_from_crt_client_config","lifecycleEventState","topicAliasBindings","Map","Connecting","lastDisconnect","create_mqtt5_websocket_stream","_on_stopped_internal","on_attempting_connect","on_connection_success","on_browser_client_error","on_browser_close","on_browser_disconnect_packet","reconnectionScheduler","Running","Stopping","Restarting","stop","disconnectPacket","transform_crt_disconnect_to_mqtt_js_disconnect","subMap","transform_crt_subscribe_to_mqtt_js_subscription_map","subOptions","transform_crt_subscribe_to_mqtt_js_subscribe_options","grants","suback","transform_mqtt_js_subscription_grants_to_crt_suback","topicFilters_1","topicFilters","unsubOptions","transform_crt_unsubscribe_to_mqtt_js_unsubscribe_options","cmd","unsuback","transform_mqtt_js_unsuback_to_crt_unsuback","PacketType","Unsuback","reasonCodes","UnsubackReasonCode","Success","reset_topic_aliases","bind_topic_alias","alias","is_topic_alias_bound","topicAliasingOptions","outboundBehavior","OutboundTopicAliasBehaviorType","Manual","topicAlias","topicName","publishOptions","transform_crt_publish_to_mqtt_js_publish_options","qos_1","completionPacket","AtLeastOnce","Puback","reasonCode","PubackReasonCode","puback","transform_mqtt_js_puback_to_crt_puback","transform_mqtt_js_disconnect_to_crt_disconnect","Disconnected","disconnectionEvent_1","DISCONNECTION","connectionFailureEvent_1","_d","INFO","attemptingConnectEvent","ATTEMPTING_CONNECT","crt_connack","transform_mqtt_js_connack_to_crt_connack","connectionSuccessEvent","settings","create_negotiated_settings","STOPPED","utils","configMin","configMax","DEFAULT_MIN_RECONNECT_DELAY_MS","DEFAULT_MAX_RECONNECT_DELAY_MS","compute_mqtt_js_reconnect_delay_from_crt_max_delay","validate_required_uint16","propertyName","validate_optional_uint32","validate_required_uint32","validate_optional_nonnegative_uint32","validate_required_nonnegative_uint32","validate_mqtt5_client_config","crtConfig","sessionExpiryIntervalSeconds","receiveMaximum","maximumPacketSizeBytes","_f","willDelayIntervalSeconds","transform_crt_user_properties_to_mqtt_js_user_properties","userProperties","mqttJsProperties","userProperties_1","userProperties_1_1","transform_mqtt_js_user_properties_to_crt_user_properties","crtProperties","propertyEntry","MAXIMUM_VARIABLE_LENGTH_INTEGER","mqtt_js_connack","Connack","ConnectReasonCode","set_defined_property","sessionExpiryInterval","maximumQoS","retainAvailable","maximumPacketSize","_g","assignedClientIdentifier","_h","topicAliasMaximum","_j","reasonString","_k","_l","wildcardSubscriptionAvailable","_m","subscriptionIdentifiersAvailable","_o","sharedSubscriptionAvailable","_p","serverKeepAlive","_q","responseInformation","_r","serverReference","maximumQos","ExactlyOnce","receiveMaximumFromServer","DEFAULT_RECEIVE_MAXIMUM","maximumPacketSizeToServer","MAXIMUM_PACKET_SIZE","topicAliasMaximumToServer","outboundCacheMaxSize","topicAliasMaximumToClient","inboundCacheMaxSize","wildcardSubscriptionsAvailable","_s","sharedSubscriptionsAvailable","_t","rejoinedSession","_w","_u","_v","session_behavior","mqttJsClientConfig","protocolVersion","DEFAULT_CONNECT_TIMEOUT_MS","ClientSessionBehavior","RejoinPostSuccess","RejoinAlways","autoUseTopicAlias","autoAssignTopicAlias","queueQoSZero","resubscribe","topic_aliasing_options","LRU","crtWill","hasWillProperties","willProperties","payloadFormat","PayloadFormatIndicator","Utf8","messageExpiryIntervalSeconds","contentType","responseTopic","correlationData","create_mqtt_js_will_from_crt_config","hasProperties","requestResponseInformation","requestProblemInformation","validate_crt_disconnect","propertiesValid","mqttJsDisconnect","crtDisconnect","Disconnect","DisconnectReasonCode","NormalDisconnection","subscriptionIdentifier","validate_crt_subscribe","subscriptionMap","subscription","mqttJsSub","nl","noLocal","rap","retainAsPublished","rh","retainHandlingType","RetainHandlingType","SendOnSubscribe","topicFilter","subscriptionsGranted","Suback","validate_crt_publish","mqttJsPublish","crtPublish","Publish","payloadFormatIndicator","Bytes","messageExpiryInterval","subIds","crtPuback","codes","crtUnsuback","buffer_1","__importDefault","process_1","delimeter_1","Find","zero_pad","canonical_time","now","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","canonical_day","sign_url","signing_config","day","service","canonical_headers","hostname","payload_hash","asBytes","canonical_params","canonical_request","pathname","canonical_request_hash","signature_raw","signing_key","service_name","hash_opts","HmacSHA256","make_signing_key","signature","query_params","websocketoptions","create_signing_config","URL","URIError","create_mqtt5_websocket_url","Ws","signingConfig","Custom","customUrlFactory","add_to_username_parameter","current_username","parameter_value","parameter_pre_text","return_string","is_string_and_not_empty","addParam","paramName","paramValue","paramSet","input_username","input_authorizer","input_signature","input_builder_username","input_token_key_name","input_token_value","processedConfig","authorizerName","tokenKeyName","tokenValue","tokenSignature","paramList","usingSigning","pathSplit","keyValue","kvPair","events_1","CancelController","cancelled","emitterFactory","EventEmitter","EVENT_NAME","removeAllListeners","hasBeenCancelled","onEvent","cancelRemoveListener","liftedPromise","newLiftedPromise","eventData","eventDataTransformer","eventName","cancelController","cancelMessage","makeSelfCleaningPromise","BufferedEvent","eventQueue","lastQueuedEvent","HttpVersion","InboundTopicAliasBehaviorType","SubackReasonCode","isView","view","is_nodejs","versions","package_info","cleaner","finally","promiseBody","localResolve","localReject","resource","base64","ieee754","customInspectSymbol","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","actual","fromString","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","numberIsNaN","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","poolSize","_isBuffer","compare","pos","swap16","swap32","swap64","toLocaleString","equals","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","configurable","stack","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","msg","received","isInteger","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","base64clean","alphabet","table","i16","BufferBigIntNotDefined","iotidentity","greengrass","iotjobs","iotshadow","aws_crt_1","model","DiscoveryError","response_code","gg_server_name","connection_manager","is_alpn_available","discover","thing_name","body_data","json","discover_response","DiscoverResponse","from_json","util_1","ConnectivityInfo","host_address","metadata","Id","HostAddress","PortNumber","Metadata","GGCore","thing_arn","connectivity","Connectivity","thingArn","GGGroup","gg_group_id","cores","certificate_authorities","Cores","GGGroupId","CAs","gg_groups","groups","GGGroups","service_client_mqtt_adapter","IotIdentityError","myProto","IotIdentityClient","createClientError","INVALID_PAYLOAD_PARSING_ERROR","mqttAdapter","ServiceClientMqtt311Adapter","newFromMqtt5Client","serviceClient","ServiceClientMqtt5Adapter","publishCreateKeysAndCertificate","subscribeToCreateKeysAndCertificateAccepted","messageHandler","payload_text","subscribeToCreateKeysAndCertificateRejected","subscribeToRegisterThingRejected","templateName","subscribeToCreateCertificateFromCsrAccepted","publishRegisterThing","subscribeToRegisterThingAccepted","subscribeToCreateCertificateFromCsrRejected","publishCreateCertificateFromCsr","IotJobsError","IotJobsClient","subscribeToJobExecutionsChangedEvents","thingName","subscribeToStartNextPendingJobExecutionAccepted","subscribeToDescribeJobExecutionRejected","jobId","subscribeToNextJobExecutionChangedEvents","subscribeToUpdateJobExecutionRejected","subscribeToUpdateJobExecutionAccepted","publishUpdateJobExecution","subscribeToDescribeJobExecutionAccepted","publishGetPendingJobExecutions","subscribeToGetPendingJobExecutionsAccepted","subscribeToStartNextPendingJobExecutionRejected","subscribeToGetPendingJobExecutionsRejected","publishStartNextPendingJobExecution","publishDescribeJobExecution","RejectedErrorCode","JobStatus","IotShadowError","IotShadowClient","subscribeToUpdateShadowRejected","subscribeToShadowDeltaUpdatedEvents","subscribeToGetNamedShadowRejected","shadowName","subscribeToDeleteNamedShadowRejected","publishDeleteShadow","publishGetNamedShadow","subscribeToDeleteShadowAccepted","subscribeToGetShadowAccepted","subscribeToGetNamedShadowAccepted","subscribeToNamedShadowUpdatedEvents","subscribeToShadowUpdatedEvents","publishDeleteNamedShadow","subscribeToDeleteNamedShadowAccepted","subscribeToDeleteShadowRejected","subscribeToGetShadowRejected","publishUpdateShadow","publishGetShadow","subscribeToUpdateShadowAccepted","subscribeToUpdateNamedShadowRejected","publishUpdateNamedShadow","subscribeToNamedShadowDeltaUpdatedEvents","subscribeToUpdateNamedShadowAccepted","onMessageReceivedHandler","handler","subscriptionHandlers","isSuccessfulPubackReasonCode","isSuccessfulSubackReasonCode","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","num","symbol","for","_init","_bufs","_new","_offset","tot","_reverseOffset","blOffset","bufferId","dstStart","srcStart","srcEnd","off","bufoff","shallowSlice","startOffset","endOffset","consume","trunc","isNaN","duplicate","_appendBuffer","_isBufferList","blIndex","buffOffset","buff","nativeSearchResult","revOffset","_match","searchOffset","methods","isBufferList","DuplexStream","BufferListStream","_callback","piper","that","latin1Write","_augment","species","toHex","objectWriteUInt16","objectWriteUInt32","sliceLen","stringtrim","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","setFunctionLength","$TypeError","$apply","$call","$reflectApply","$defineProperty","$max","originalFunction","applyBind","objectToString","o","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isError","isFunction","isPrimitive","factory","undef","CryptoJS","C","BlockCipher","lib","C_algo","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","x2","x4","x8","RCON","AES","extend","_doReset","_nRounds","_keyPriorReset","keyWords","words","keySize","sigBytes","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","M","_doCryptBlock","decryptBlock","nRounds","s0","s1","s2","s3","t0","t1","t2","t3","_createHelper","N","ORIG_P","ORIG_S","BLOWFISH_CTX","pbox","sbox","F","ctx","BlowFish_Encrypt","temp","Xl","Xr","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","Data1","Data2","Blowfish","blockSize","ivSize","Cipher","C_lib","WordArray","BufferedBlockAlgorithm","C_enc","Base64","EvpKDF","cfg","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","dataUpdate","_append","_process","_doFinalize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","decrypt","ciphertext","C_mode","StreamCipher","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","block","_prevBlock","processBlock","thisBlock","Pkcs7","pad","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","unpad","CipherParams","modeCreator","_minBufferSize","_mode","__creator","_doProcessBlock","finalProcessedBlocks","_data","cipherParams","mixIn","formatter","OpenSSLFormatter","format","OpenSSL","salt","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","OpenSSLKdf","kdf","execute","hasher","compute","derivedParams","globalThis","msCrypto","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","subtype","overrides","$super","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","nBytes","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","escape","utf8Str","unescape","_nDataBytes","doFlush","processedWords","dataWords","dataSigBytes","nBlocksReady","nWordsReady","nBytesReady","Hasher","messageUpdate","_createHmacHelper","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","Base64url","urlSafe","_safe_map","swapEndian","word","Utf16","Utf16BE","utf16Chars","utf16Str","utf16StrLength","Utf16LE","iterations","derivedKey","derivedKeyWords","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","superInit","subInit","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","typedArrayByteLength","T","sin","_hash","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","CFB","generateKeystreamAndEncrypt","keystream","CTRGladman","incWord","b1","b2","b3","incCounter","counter","_counter","CTR","ECB","OFB","_keystream","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","PBKDF2","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","S","C_","G","RabbitLegacy","K","X","_X","_C","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","gh","gl","Rabbit","RC4","keySigBytes","_S","keyByteIndex","keyByte","generateKeystreamWord","keystreamWord","RC4Drop","drop","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","al","bl","cl","dl","el","ar","br","cr","dr","hl","hr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","HmacRIPEMD160","W","HmacSHA1","SHA224","HmacSHA224","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","g","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","X64Word","x64","Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","high","low","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","C_x64","X64WordArray","SHA512","SHA384","HmacSHA384","X64Word_create","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","ch","dh","eh","fh","fl","hh","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","toX32","HmacSHA512","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","_des1","_des2","_des3","X32WordArray","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","w","plural","ms","msAbs","isPlural","long","fmtLong","fmtShort","formatArgs","useColors","namespace","humanize","diff","lastC","save","namespaces","storage","setItem","removeItem","load","getItem","DEBUG","__nwjs","navigator","userAgent","documentElement","WebkitAppearance","firebug","exception","$1","localStorage","localstorage","warned","warn","log","formatters","env","createDebug","prevTime","namespacesCache","enabledCache","enableOverride","enabled","curr","coerce","selectColor","newDebug","toNamespace","regexp","disable","names","skips","enable","$SyntaxError","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","desc","eos","SIGNAL_FLUSH","onuncork","_corked","destroyer","_autoDestroy","autoDestroy","_ended","Duplexify","opts","_writable","_readable","_readable2","_forwardDestroy","_forwardEnd","_ondrain","_drained","_forwarding","_unwrite","_unread","unend","onreadable","_forward","_finish","ws","noop","onlegacyfinish","onexit","exitCode","onclosenexttick","onrequest","req","setHeader","abort","isRequest","stdio","isChildProcess","EvalError","ReferenceError","SyntaxError","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","flags","addErrorHandlerIfEventEmitter","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","events","existing","newListener","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","removeEventListener","setMaxListeners","getMaxListeners","doError","context","prependOnceListener","originalListener","spliceOne","rawListeners","eventNames","isCallable","toStr","thisArg","forEachArray","forEachString","forEachObject","concatty","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","implementation","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","hasProto","getProto","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt64Array","BigUint64Array","Boolean","decodeURI","encodeURI","eval","FinalizationRegistry","Proxy","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","intrinsicName","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","hasPropertyDescriptors","hasArrayLengthDefineBug","$Object","origSymbol","hasSymbolSham","symObj","syms","propertyIsEnumerable","descriptor","$hasOwn","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","q","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","isLE","mLen","eLen","eMax","eBias","nBits","NaN","rt","LN2","ctor","superCtor","super_","TempCtor","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","all","strClass","GeneratorFunction","isFnRegex","generatorFunc","getGeneratorFunc","whichTypedArray","MozWebSocket","extendStatics","__","TreeNode","ee","rr","L","ne","te","TreeNodeEnableIndex","tr","ie","ContainerIterator","iteratorType","Container","empty","throwIteratorAccessError","TreeContainer","$","se","fe","grandParent","curNode","he","U","Y","Z","ue","ae","updateKeyByIterator","eraseElementByPos","eraseElementByKey","eraseElementByIterator","getElementByPos","getHeight","traversal","TreeIterator","pre","__generator","trys","ops","verb","throw","OrderedSetIterator","OrderedSet","P","rBegin","rEnd","front","back","lowerBound","upperBound","reverseLowerBound","reverseUpperBound","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","doUse","hit","isStale","del","unshiftNode","maxAge","walker","removeNode","Entry","forEachStep","thisp","lc","stale","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lengthCalculator","lC","itemCount","rforEach","toArray","dump","dumpLru","expiresAt","prune","types","CMD_SHIFT","CMD_MASK","DUP_MASK","QOS_MASK","QOS_SHIFT","RETAIN_MASK","VARBYTEINT_MASK","VARBYTEINT_FIN_MASK","VARBYTEINT_MAX","SESSIONPRESENT_MASK","SESSIONPRESENT_HEADER","CONNACK_HEADER","USERNAME_MASK","PASSWORD_MASK","WILL_RETAIN_MASK","WILL_QOS_MASK","WILL_QOS_SHIFT","WILL_FLAG_MASK","CLEAN_SESSION_MASK","CONNECT_HEADER","willDelayInterval","authenticationMethod","authenticationData","propertiesCodes","genHeader","propertiesTypes","PUBLISH_HEADER","SUBSCRIBE_HEADER","SUBSCRIBE_OPTIONS_QOS_MASK","SUBSCRIBE_OPTIONS_NL_MASK","SUBSCRIBE_OPTIONS_NL_SHIFT","SUBSCRIBE_OPTIONS_RAP_MASK","SUBSCRIBE_OPTIONS_RAP_SHIFT","SUBSCRIBE_OPTIONS_RH_MASK","SUBSCRIBE_OPTIONS_RH_SHIFT","SUBSCRIBE_OPTIONS_RH","SUBSCRIBE_OPTIONS_NL","SUBSCRIBE_OPTIONS_RAP","SUBSCRIBE_OPTIONS_QOS","UNSUBSCRIBE_HEADER","ACKS","pubcomp","pubrel","pubrec","SUBACK_HEADER","VERSION3","VERSION4","VERSION5","VERSION131","VERSION132","QOS","pingreq","pingresp","writeToStream","Accumulator","_array","lengths","parser","SubOk","generateBuffer","generateCache","generateNumber","genBufVariableByteInt","digit","generate4ByteBuffer","Packet","constants","Parser","opt","_states","_resetState","_list","_stateCounter","_parseHeader","zero","_parseLength","_parseVarByteNum","_parsePayload","_pos","_parseConnect","_parseConnack","_parsePublish","_parseConfirmation","_parseSubscribe","_parseSuback","_parseUnsubscribe","_parseUnsuback","_parseDisconnect","_parseAuth","_emitError","protocolId","_parseString","bridgeMode","_parseNum","_parseProperties","_parseBuffer","returnCode","_parseMessageId","_parseByte","granted","unsubscriptions","maybeBuffer","_parseStringPair","_parse4ByteNum","fullInfoFlag","_parseByType","currentUserProperty","currentValue","_newPacket","zeroBuf","numbers","numCache","writeNumber","writeNumberCached","toGenerate","propertiesData","getProperties","providedUsername","isStringOrBuffer","writeVarByteInt","writeStringOrBuffer","writeString","rc","getPropertiesByMaximumPacketSize","confirmation","subs","itopic","iqos","jtopic","jqos","jnl","jrap","jrh","joptions","unsubs","emptyPacket","writeNumberGenerated","varByteIntCache","writeStringPair","generatedNumber","toWrite","writeProperties","propertiesLength","getLengthProperty","currentLength","propLength","propValueLength","valueIndex","mayEmptyProps","currentMayEmptyProp","writeProperty","generated4ByteBuffer","write4ByteNumber","bufOrString","field","Store","TopicAliasRecv","TopicAliasSend","mqttPacket","DefaultMessageIdProvider","reInterval","validations","xtend","defaultConnectOptions","reschedulePings","removeTopicAliasAndRecoverTopicName","topicAliasSend","getTopicByAlias","sendPacket","storeAndSend","cbStorePut","storePacket","outgoingStore","put","streamBuilder","rejectUnauthorized","customHandleAcks","messageIdProvider","incomingStore","_resubscribeTopics","messageIdToTopic","pingTimer","connected","disconnecting","queue","connackTimer","reconnectTimer","_storeProcessing","_packetIdsDuringStoreProcessing","_storeProcessingQueue","outgoing","_firstConnection","topicAliasRecv","deliver","_resubscribe","register","_sendPacket","_setupReconnect","_setupStream","completeParse","packets","nextTickWork","work","_handlePacket","_clearReconnect","volatile","authPacket","_cleanUp","_handlePublish","_handleAck","_handlePubrel","_handleConnack","_handleAuth","_handlePingresp","_handleDisconnect","_checkDisconnecting","publishProc","_nextId","invoke","invalidTopic","validateTopics","defaultOpts","currentOpts","subscribeProc","topics","unsubscribeProc","force","closeStores","disconnected","e1","e2","_deferredReconnect","removeOutgoingMessage","_reconnect","reconnecting","setInterval","clearInterval","forced","getAliasByTopic","getLruAlias","applyTopicAlias","_shiftPingInterval","_storePacket","_setupPingTimer","pingResp","_checkPing","reschedule","_onConnect","handleAuth","validReasonCodes","gotTopic","handleMessage","pubackRC","deallocate","_invokeStoreProcessingQueue","pubrecRC","grantedI","comp","pub","allocate","getLastMessageId","getLastAllocated","_resubscribeTopicsKeys","connackPacket","topicI","resubscribeTopic","startStreamProcess","outStore","createStream","clearStoreProcessing","_flushStoreProcessingQueue","allProcessed","_invokeAllStoreProcessingQueue","storeDeliver","isInitialized","websocketSubProtocol","setDefaultOpts","buildUrl","connectSocket","sendSocketMessage","fail","closeSocket","onSocketOpen","onSocketMessage","reader","FileReader","readAsArrayBuffer","onSocketClose","onSocketError","brokerUrl","parseAuthOptions","query","cert","isSecure","defaultProtocol","servers","_reconnectCount","__webpack_require__","tcp","ssl","tls","mqtts","wx","wxs","ali","alis","wss","net","createConnection","mqttClient","isIP","servername","handleTLSerrors","authorized","WSS_OPTIONS","IS_BROWSER","setDefaultBrowserOpts","createBrowserWebSocket","objectModeMode","createWebSocket","webSocketStream","createWebSocketStream","socketTask","errMsg","destroyRef","onOpen","onMessage","onClose","onError","nextId","streamsOpts","defaultStoreOptions","_inflights","aliasToTopic","LruMap","NumberAllocator","topicToAlias","numberAllocator","use","firstVacant","validateTopic","SortedSet","debugTrace","debugError","Interval","ss","lhs","rhs","it","pointer","free","rLow","rHigh","lLow","intervalCount","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","O","addNumericSeparator","sepRegex","int","intStr","dec","utilInspect","inspectCustom","inspectSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","nodeName","attrs","attributes","childNodes","singleLineValues","indentedJoin","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","ys","protoTag","stringTag","trailer","lowbyte","lineJoiner","isArr","symMap","wrappy","called","onceStrict","onceError","strict","arg1","arg2","arg3","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","Item","argv","binding","cwd","chdir","umask","aa","ca","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","construct","Pa","Qa","_context","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","ab","bb","db","eb","fb","defaultSelected","hb","ib","jb","textContent","kb","lb","namespaceURI","innerHTML","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","lineClamp","qb","rb","sb","setProperty","tb","menuitem","area","col","embed","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","oc","clz32","pc","qc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","be","documentMode","ce","de","ge","le","me","oe","pe","qe","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","D","of","pf","qf","rf","sf","capture","passive","J","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","eventTime","ih","jh","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ii","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","deps","si","ti","ui","vi","wi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","Hj","Ij","Jj","Kj","Lj","V","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","ok","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","isReactComponent","pendingChildren","mutableSourceEagerHydrationData","pendingSuspenseBoundaries","il","jl","zj","$k","ll","reportError","_internalRoot","ol","ql","rl","unmount","unstable_scheduleHydration","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","jsxs","setState","forceUpdate","_status","_result","Children","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","createRef","isValidElement","lazy","memo","startTransition","unstable_act","createErrorType","NodeError","_Base","subClass","superClass","oneOf","expected","thing","determiner","this_len","endsWith","createReadableStreamAsyncIterator","getHighWaterMark","_require$codes","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","emitClose","content","updateReadableListening","wState","asyncIterator","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","rState","_Object$setPrototypeO","_defineProperty","hint","prim","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","enumerableOnly","symbols","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","protoProps","staticProps","_getString","_getBuffer","emitErrorAndCloseNT","emitCloseNT","ERR_STREAM_PREMATURE_CLOSE","writableEnded","readableEnded","ERR_MISSING_ARGS","to","streams","popCallback","destroys","closed","ERR_INVALID_OPT_VALUE","duplexKey","highWaterMarkFrom","pipeline","ReInterval","interval","_args","_interval","copyBuffer","cur","circles","refsNew","cloneProto","cloneArray","o2","a2","rfdcCircles","sortIndex","performance","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","define","hasDescriptors","gOPD","functionLengthIsConfigurable","functionLengthIsWritable","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","$wm","$m","$o","channel","assert","listGet","listHas","listSet","_duplexState","bufferIndex","getStateLength","freeGlobal","punycode","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","extra","ucs2encode","digitToBasic","flag","adapt","delta","numPoints","firstTime","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","percentTwenties","Format","RFC1738","RFC3986","formats","defaults","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","segment","chain","leaf","cleanRoot","decodedRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","parseValues","newObj","compact","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","addQueryPrefix","arrayFormat","encodeDotInKeys","encodeValuesOnly","serializeDate","skipNulls","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","findFlag","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","hexTable","arrayToObject","compacted","compactQueue","strWithoutPlus","defaultEncoder","kind","mapped","mergeTarget","targetItem","Url","slashes","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","https","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","esc","qm","relative","resolveObject","rel","tkeys","tkey","rkeys","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","trace","isArgumentsObject","isGeneratorFunction","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isPromise","isArrayBufferView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","stylize","stylizeNoColor","showHidden","_extend","stylizeWithColor","formatValue","styleType","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","pid","isNativeError","months","getHours","getMinutes","getSeconds","getDate","getMonth","timestamp","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","availableTypedArrays","typedArrays","superProto","getter","trySlices","tryTypedArrays","wrapper","pushNode","forEachReverse","getReverse","mapReverse","initial","reduceReverse","toArrayReverse","sliceReverse","deleteCount","reverse","excluded","sourceKeys","possibleNames","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","leafPrototypes","ns","def","definition","chunkId","promises","miniCssF","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","nc","onScriptComplete","onload","doneFns","nmd","paths","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","_taggedTemplateLiteral","freeze","_setPrototypeOf","getChildMapping","mapFn","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","onExited","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","in","exit","enter","TransitionGroup","_React$Component","handleExited","_assertThisInitialized","contextValue","isMounting","firstRender","mounted","appear","currentChildMapping","_this$props","childFactory","TransitionGroupContext","pulsate","rippleX","rippleY","rippleSize","inProp","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","timeoutId","_templateObject","_templateObject2","_templateObject3","_templateObject4","_t2","_t3","_t4","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","pointerEvents","TouchRippleRipple","Ripple","touchRippleClasses","_ref4","TouchRipple","center","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","startCommit","oldRipples","fakeElement","rect","getBoundingClientRect","sizeX","clientWidth","sizeY","clientHeight","getButtonBaseUtilityClass","ButtonBaseRoot","WebkitTapHighlightColor","verticalAlign","MozAppearance","textDecoration","borderStyle","buttonBaseClasses","colorAdjust","ButtonBase","centerRipple","disableRipple","disableTouchRipple","focusRipple","LinkComponent","onContextMenu","onDragLeave","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","buttonRef","rippleRef","handleRippleRef","useForkRef","handleFocusVisible","handleBlurVisible","focusVisibleRef","useIsFocusVisible","setFocusVisible","mountedState","setMountedState","enableTouchRipple","useRippleHandler","rippleAction","eventCallback","skipRippleAction","useEventCallback","handleMouseDown","handleContextMenu","handleDragLeave","handleMouseUp","handleMouseLeave","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","handleFocus","isNonNativeButton","keydownRef","handleKeyUp","ComponentProp","buttonProps","handleRef","focusVisibleClassName","composedClasses","getButtonUtilityClass","commonIconStyles","ButtonRoot","colorInherit","disableElevation","fullWidth","_theme$palette$getCon","_theme$palette","inheritContainedBackgroundColor","inheritContainedHoverBackgroundColor","primaryChannel","mainChannel","Button","inheritContainedHoverBg","buttonClasses","inheritContainedBg","ButtonStartIcon","startIcon","ButtonEndIcon","endIcon","contextProps","ButtonGroupContext","buttonGroupButtonContextPositionClassName","ButtonGroupButtonContext","resolvedProps","disableFocusRipple","endIconProp","startIconProp","positionClassName","useEvent_shouldNotBeInvokedBeforeMount","latestRef","stableRef","none","arrayAll","select","childMatcher","childFirst","firstElementChild","EnterNode","datum","_next","_parent","__data__","bindIndex","group","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","arraylike","ascending","xhtml","svg","xlink","xml","xmlns","space","local","attrRemove","attrRemoveNS","fullname","removeAttributeNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","styleRemove","removeProperty","styleConstant","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","lower","creatorInherit","uri","creatorFixed","constantNull","selection_cloneShallow","cloneNode","selection_cloneDeep","onRemove","typename","__on","onAdd","contextListener","CustomEvent","createEvent","initEvent","dispatchConstant","dispatchFunction","Selection","parents","_groups","_parents","selection","subgroups","subnode","subgroup","selectAll","selectorAll","selectChild","childFind","selectChildren","childrenFilter","matcher","enterGroup","updateGroup","_enter","_exit","sparse","onenter","onupdate","groups0","groups1","m0","m1","merges","group0","group1","compareNode","sortgroups","sortgroup","each","attr","getAttributeNS","classed","html","creator","deep","typenames","parseTypenames","Dispatch","taskHead","taskTail","frame","pokeDelay","clockLast","clockNow","clockSkew","clock","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","restart","wake","timerFlush","nap","poke","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","timing","schedules","__transition","tween","schedule","tick","ease","svgNode","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","translate","scale","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","color_formatHex","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","basis","v0","v1","v2","v3","channels","displayable","formatHex8","formatHsl","linear","gamma","nogamma","exponential","rgbGamma","colorRgb","rgbSpline","spline","reA","reB","am","bm","bs","one","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","id0","id1","on0","on1","sit","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","interrupt","defaultTiming","number1","number2","e10","e5","tickSpec","power","log10","inc","tickIncrement","descending","bisector","compare1","compare2","mid","ascendingBisect","bisectRight","genericArray","setTime","numberArray","normalize","bimap","d0","d1","r0","r1","polymap","bisect","untransform","unknown","piecewise","interpolateValue","rescale","clamper","invert","rangeRound","interpolateRound","initRange","prefixExponent","formatSpecifier","specifier","FormatSpecifier","align","sign","precision","formatDecimalParts","toExponential","exponent","%","toPrecision","formatRounded","formatPrefix","prefixes","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","tickFormat","tickStep","precisionPrefix","precisionRound","precisionFixed","linearish","ticks","nice","prestep","maxIter","formatLocale","point","applyX","applyY","invertX","invertY","rescaleX","rescaleY","isSmartPhone","RECTANGLE_SIZE","temperature2color","scaleLinear","Heatmap","data_row","row_idx","data_cell","col_idx","DataContainer","graphArea","_Fragment","tableArea","resolveLogins","logins","tokenOrProvider","resolvedPairs","throwOnMissingAccessKeyId","throwOnMissingCredentials","throwOnMissingSecretKey","STORE_NAME","IndexedDbStorage","dbName","withObjectStore","store","onsuccess","getDb","openDbRequest","indexedDB","onblocked","onupgradeneeded","createObjectStore","keyPath","tx","transaction","oncomplete","objectStore","inMemoryStorage","fromCognitoIdentityPool","accountId","customRoleArn","identityPoolId","userIdentifier","logger","parentClientConfig","cacheKey","_clientConfig$region","GetIdCommand","CognitoIdentityClient","_client","identityId","IdentityId","throwOnMissingId","AccountId","IdentityPoolId","Logins","parameters","_parameters$logger","_parameters$client","_parameters$clientCon","_parameters$clientCon2","_parameters$clientCon3","_parameters$parentCli","GetCredentialsForIdentityCommand","Credentials","AccessKeyId","Expiration","SecretKey","SessionToken","CustomRoleArn","accessKeyId","secretAccessKey","sessionToken","expiration","AWS_REGION","AWS_IOT_ENDPOINT","AWS_COGNITO_IDENTITY_POOL_ID","AWSCognitoCredentialsProvider","expire_interval_in_ms","_this$cachedCredentia","_this$cachedCredentia2","_this$cachedCredentia3","_this$cachedCredentia4","_this$cachedCredentia5","cachedCredentials","Region","_fromCognitoIdentityPool","startMqtt5Connection","wsConfig","createClient","attemptingConnect","connectionSuccess","str2NumberMap","strList","sliceByNumber","INITIAL_TEMPERATURE_MAP","TOPIC_PREFIX","ColorBar","alt","deviceList","setDeviceList","subscribedDeviceList","setSubscribedDeviceList","temperature2d","setTemperature2d","MCU_DEV_BOARD_NEW_LAB","currentDevice","topic_name","subscribeMqtt5","processPayload","useEvent","thermoDataReversed","tmp_list","uint16ListToThermoMap","row","isSummary","device","sensorList","App","sensor","setSensor","setClient","createdClient","DemoIcon","startIconName","LocalFireDepartmentIcon","borderWidth","transformOrigin","ThermoSensorDemo","ReactDOM","getElementById"],"sourceRoot":""}